输入:一个txt文件(假设全是字母的英文词,每个单词之间用单个空格隔开,假设单词最长为10个字母) 加密:得到每个单词的长度n,随机生成一个9位的数字,将n-1与这个9位的数字连接,形成一个10位的数字,作为密匙key。依照key中各个数字对单词中每一个对应位置的字母进行向后移位(例:如过key中某数字为2,对应该位置的字母为a,加密则应移位成c,如果超过z,则回到A处继续移位),对长度不到10的单词,移位后,将移位后的单词利用随机字母补全到10个,最终形成以10个字母为一个单词,并以单个空格分割的加密文本,存入文件。 解密:给定该文本文件并给定key(10位数字),恢复原来的文本。


In [ ]:
import random
import string

def move(k,w):#加密
    for i in range(0,len(w),10):
        for j in range(i+1,i+1+k[i]):
        temp=chr(w[j])+k[j]
        if temp>122:
            w[j]=ord(temp-26)
            elif:
                w[j]=ord(temp)
    return k,w

def remove(k,w):#解密
    text=[]
    fh=open(r'filel_name',w)
    for i in range(0,len(w),10):
        for j in range(i+1,i+1+k[i]):
            temp=chr(w[j])-k[j]
            if temp<97:
                text[j]=ord(temp+26)
                elif:
                    text[j]=ord(temp)
        text.append(' ')
    return fh.writelines(text)
        
    
fh=open(r'file_name txt')
Words=fh.read()
fh.close()
secret=open(r'file_name',w)

key=[]
letters=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']

for word in Words:
    i=len(word)
    key.append(i)
    word+sampe.join([word,10-i])
for ke in key:
    key+sample.join(['0','1','2','3','4','5','6','7','8','9'],9)
    
fh.writelines(Word)
secret.writelines(key)


secret,fh=move(key,Word)
print("加密文字:")
fh.open(r'file_name')
print("密钥:")
secret(r'file_name')

#解密:
fh=remove(secret,fh)
print("解密文字:")
fh.open(r'file_name')