我有一个以十六进制编写的 XOR 加密字节列表(包含在“cipher.txt”中,每行一个字节),我知道使用的 XOR 密钥是一个字节。因此,我正在尝试这样的蛮力方法:
f = open("cipher.txt", "r")
ciphers = f.readlines()
f.close
for x in range(0, 255):
key = bin(int(x))[2:]
for line in ciphers:
w = bin(int(line, 16))[2:]
y = int(w)
z = y ^ x
print chr(z),
print ""
在那里,我的结果 (z) 不会保持二进制。相反,我得到类似“10010084”的结果。如果我不使用“y = int(w)”部分,我会得到“^: 'str' and 'int' 不支持的操作数类型”作为错误,即使我不明白为什么,因为变量的定义类似于有效的“关键”变量。
我怀疑我的代码中有一个非常愚蠢的错误导致它失败。任何人都可以建议吗?