原始加密如下(我已经做过): 对于键中的每个字母和明文中的每个字母(它们的长度相同),您都需要计算ascii值,找到XOR结果,将其转换为十进制,将32加到该值上,然后再转换回char。字符将是密文。 。
key = this is a cool key
plaintext = Wonderland is cool
ciphertext= C''7e;?a/dc&<lc$*5
def decryption(ciphertext,key):
plaintext = ""
for k in range(len(ciphertext)):
i = ciphertext[k]
j = key[k]
val = xor_calc(chr(ord(i)-32), chr(ord(j)-32))
val = chr(ord(xor)+ 32)
plaintext += val
解密后得到: 陆地上很酷
显然应该与原始明文匹配,另外还要与其他密码和缺少字母的密钥匹配。我的加密效果很好,因为我的答案与结果应该匹配。任何帮助将不胜感激!
忘了提一下,我有一个函数xor_calc,它使用密码和密钥字母,将其转换为ascii并计算XOR结果并返回到char
答案 0 :(得分:1)
简化您对xor
的计算对我有用:
xor = chr((ord(i)-32) ^ (ord(j)-32) + 32)
实际上,如果我运行decryption(plaintext,key)
,我会得到你的ciphertext
;如果运行decryption(ciphertext,key)
,我将得到您的plaintext
。 (这很有意义,因为xor
是可逆的。)