无法获取正确的代码输出?

时间:2019-10-31 18:25:43

标签: python cryptography xor

原始加密如下(我已经做过): 对于键中的每个字母和明文中的每个字母(它们的长度相同),您都需要计算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

1 个答案:

答案 0 :(得分:1)

简化您对xor的计算对我有用:

xor = chr((ord(i)-32) ^ (ord(j)-32) + 32)

实际上,如果我运行decryption(plaintext,key),我会得到你的ciphertext;如果运行decryption(ciphertext,key),我将得到您的plaintext。 (这很有意义,因为xor是可逆的。)