|
发表于 2017-3-29 16:11:12
|
显示全部楼层
- def 加密(明文, 密钥):
- # 把明文和密钥分别转换成ASCII值的列表
- a = list(map(lambda x: ord(x), 明文))
- b = list(map(lambda x: ord(x), 密钥))
- # 取异或后返回密文
- 密文 = []
- 密钥长度 = len(b)
- for i in range(len(a)):
- 密文.append(a[i] ^ b[i % 密钥长度])
- return 密文
- 明文 = input('请输入明文: \n')
- 密钥 = input('请输入密钥: \n')
- print('加密后: ',加密(明文, 密钥))
- def 解密(密文, 密钥):
- # 密文转换为一个数字组成的列表
- 密文 = list(map(lambda x: int(x), 密文))
- # 把密钥分别转换成ASCII值的列表
- b = list(map(lambda x: ord(x), 密钥))
- 密钥长度 = len(b)
- # 取异或后返回明文
- 明文 = []
- for i in range(len(密文)):
- 明文.append( chr(int(密文[i]) ^ b[i % 密钥长度]))
- return ''.join(明文)
- 密文 = input('请输入密文,以“,”隔开:\n')
- lst = 密文.split(',')
- 密钥 = input('请输入密钥: \n')
- print('解密后: ', 解密(lst, 密钥))
复制代码
输出结果:
请输入明文:
Father
请输入密钥:
god
加密后: [33, 14, 16, 15, 10, 22]
请输入密文,以“,”隔开:
33,14,16,15,10,22
请输入密钥:
god
解密后: Father |
|