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