In [6]:
import random
def gen_key(n,upper_bound):
    key=[]
    for i in range(n):
        key.append(random.randint(0,upper_bound))
    return key

In [7]:
def en_correct_ord(order):
    if 97> order >90:
        #大写小写之间的字符
        return order+6
    if order > 122:
        #被挤出去的字符,A是65
        return order-122+64    
    return order

In [8]:
def correct_num(number):
    order=number+65
    if order > 90:
        return order+6
    return order

In [9]:
def de_correct_ord(order):
    if 97> order >90:
        #大写小写之间的字符
        return order-6
    if order < 65:
        #被挤出去的字符,A是65
        return order+122-64    
    return order

In [10]:
def ensecret(infile,outfile):
    keys=[]
    encrpt_texts=[]
    with open(infile) as f:
        words=f.read().split()
    for word in words:
        encrpt_text=''
        key=[len(wors)-1]+gen_key(9,9)
        keys.append(key)
        
        for index,ch in enumerate(word):
            encrpt_text+= chr(en_correct_ord(ord(ch)+key[index]))
            #chr(i)返回数i对应的ASCII字符,ord()返回对应字符的ascii码
        for number in gen_key(10-len(word),51):
            #一共10位,需要补充10-len()位,a-zA-Z一共52个字母
            encrpt_text +=chr(correct_num(number))
        encrpt_texts.append(encrpt_text)
    with open(outfile,'w',encoding='gbk') as f:
        f.write(' '.join(encrpt_texts))
    return keys

In [12]:
def decryption(file,keys):
    real_text=''
    with open(file) as f:
        words =f.read().split()
    for index,word in enumerate(words):
        cut_word=word[:keys[index][0]+1]
        for i,ch in enumerate(cut_down):
            real_text +=chr(de_correct_ord(ord(ch)-keys[index][i]))
        real_text+=''
    return real_text

In [ ]: