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]:
In [ ]: