(先看有关ASCII码的相关知识以及码表,查维基百科或百度百科)
输入:一个txt文件(假设全是字母的英文词,每个单词之间用单个空格隔开,假设单词最长为10个字母)
加密:得到每个单词的长度n,随机生成一个9位的数字,将n-1与这个9位的数字连接,形成一个10位的数字,作为密匙key。依照key中各个数字对单词中每一个对应位置的字母进行向后移位(例:如过key中某数字为2,对应该位置的字母为a,加密则应移位成c,如果超过z,则回到A处继续移位),对长度不到10的单词,移位后,将移位后的单词利用随机字母补全到10个,最终形成以10个字母为一个单词,并以单个空格分割的加密文本,存入文件。
解密:给定该文本文件并给定key(10位数字),恢复原来的文本。 (提示,利用ord()及chr()函数,ord(x)是取得字符x的ASCII码,chr(n)是取得整数n(代表ASCII码)对应的字符。例:ord(a)的值为97,chr(97)的值为'a',因字母a的ASCII码值为97。)
In [1]:
#### 请在d存入txt文件,命名为:待解.txt,输入代解码单词。
import string
fh = open(r'd:\待解.txt')
text = fh.read()
idioms = text.split(' ')
fh.close()
idioms2 = []
key=[1,1,1,1,1,1,1,1,1,1]
for word in idioms:
i=0
while i<10:
key[i]=int(input())
i=i+1
n=0
while n < key[9]:
if (ord(word[n])-key[n]) < 97:
idioms2.append(chr(ord(word[n])-key[n]+26))
else:
idioms2.append(chr(ord(word[n])-key[n]))
n=n+1
idioms2.append(' ')
fh = open(r'd:\解.txt','w')
fh.write(''.join(idioms2))
fh.close()
In [ ]: