1

我有一个以十六进制编写的 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' 不支持的操作数类型”作为错误,即使我不明白为什么,因为变量的定义类似于有效的“关键”变量。

我怀疑我的代码中有一个非常愚蠢的错误导致它失败。任何人都可以建议吗?

4

1 回答 1

1

试试这个:

y = int(w, base=2)

你还没有关闭f

f.close()

我建议使用上下文管理器来管理打开的文件:

with open("cipher.txt", "r") as f:
    ciphers = f.readlines()
于 2012-06-22T09:51:32.753 回答