首页 > 解决方案 > 无法获得正确的代码输出?

问题描述

原始加密如下(我已经完成了):对于密钥中的每个字母和明文中的每个字母(它们的长度相同),您计算 ascii 值,找到 XOR 结果,将其转换为十进制,将 32 添加到该值,然后转换回 char。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

解密后我得到:onderland很酷

显然应该匹配原始明文,另外还有其他密码和缺少字母的密钥。不过,我的加密工作正常,因为我的答案与结果相符。任何帮助,将不胜感激!

忘了提我有一个函数 xor_calc 接受密码和密钥字母,转换为 ascii 并计算 XOR 结果并返回 char

标签: pythoncryptographyxor

解决方案


简化你xor为我工作的计算:

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

事实上,如果我跑步decryption(plaintext,key),我会得到你的ciphertext;如果运行decryption(ciphertext,key),我得到你的plaintext。(这是有道理的,因为xor它是可逆的。)


推荐阅读