In [1]:
import random

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

In [2]:
def en_correct_ord(order):
    if 97>order>90:
        return order+6
    if order>122:
        return order-122+64
    return order

In [3]:
def de_correct_ord(order):
    if 97>order>90:
        return order-6
    if order <65:
        return order+122-64
    return order

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

In [5]:
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_word):
            real_text+=chr(de_correct_ord(ord(ch)-keys[index][i]))
        real_text+=' '
    return real_text

In [6]:
def encryption(infile,outfile):
    keys=[]
    encrpt_texts=[]
    with open(infile) as f:
        words=f.read().split()
    for word in words:
        encrpt_text=''
        key=[len(word)-1]+gen_key(9,9)
        keys.append(key)
        
        for index,ch in enumerate(word):
            encrpt_text+=chr(en_correct_ord(ord(ch)+key[index]))
            
        for number in gen_key(10-len(word),51):
            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 [8]:
in_file=r'C:\Users\apple\Desktop\d.txt'
out_file=r'C:\Users\apple\Desktop\d.txt'
my_keys=encryption(in_file,out_file)

In [9]:
decryption(out_file,my_keys)


Out[9]:
'he is a murderer '

In [ ]: