In [28]:
import random
def get_wordlist():
fh = open(r'f:\temp\words.txt')
text = fh.read()
fh.close()
words = text.split(' ')
fh = open(r'f:\temp\linewords.txt', 'w')
wordnum=0
for word in words:
fh.write(word + '\n')
wordnum+=1
fh.close()
return words,wordnum
def get_keylist(wordnum,words):
keys=[]
i=0
while(i<wordnum):
oneword=words[i]
n=len(oneword)
ran=random.randint(100000000,999999999)
key=(n-1)*1000000000+ran
keys.append(key)
i+=1
return keys
def encrypt(oneword,onekey):#加密
onekey=str(onekey)
newword=[]#随机生成的十位字母
for i in range(10):
newword.append(chr(random.randint(97, 122)))
length=len(oneword)
start=0
end=1
while(end<length+1):#开始替换
a=oneword[start:end:]
b=onekey[start:end:]
if( (ord(a)+int(b))>122 ):
c=chr((ord(a)+int(b))-26)
else:
c=chr(ord(a)+int(b))
newword[start:end:]=c
start+=1
end+=1
encryptword=(''.join(newword))
return encryptword
def decrypt(encryptword,key):#解密
trueword=[]
length=int(key[:1:])+1
start=0
end=1
while(end<length+1):#开始替换
a=encryptword[start:end:]
b=key[start:end:]
if( (ord(a)-int(b))<97 ):
c=chr((ord(a)-int(b))+26)
else:
c=chr(ord(a)-int(b))
trueword[start:end:]=c
start+=1
end+=1
decryptword=(''.join(trueword))
return decryptword
def main():
#获取Word列表与key列表
(words,wordnum)=get_wordlist()
keys=get_keylist(wordnum,words)
#加密并输出到encryptwords.txt中
encryptwords=[]
for i in range(wordnum):
oneword=words[i]
onekey=keys[i]
encryptwords.append(encrypt(oneword,onekey))
fh = open(r'f:\temp\encryptwords.txt', 'w')
fh.write(' '.join(encryptwords))
fh.close()
#解密并输出到decryptwords.txt中
fh = open(r'f:\temp\encryptwords.txt')
text = fh.read()
fh.close()
encryptwords = text.split(' ')
#填写解密单词列表
i=0
decryptwords=[]
for i in range(wordnum):
encryptword=encryptwords[i]
key=str(keys[i])
decryptword=decrypt(encryptword,key)
decryptwords.append(decryptword)
i+=1
fh = open(r'f:\temp\decryptwords.txt', 'w')
fh.write(' '.join(decryptwords))
fh.close()
print(words)
print(keys)
print(encryptwords)
print(decryptwords)
main()