Python 解密单字节异或编码文件

Python 解密单字节异或编码文件,python,encryption,cryptography,xor,Python,Encryption,Cryptography,Xor,我有一个二进制文件,用一个字节进行单字节异或编码,我试图对文件进行暴力攻击,并将生成文件的哈希值与原始文件进行比较,但找不到,我与作者确认了原始哈希值 我写的代码 #!/usr/bin/env python3 def bin_xor(data, key): for i in range(len(data)): data[i] ^= key return data data = bytearray(open('sample', 'rb').read()) fo

我有一个二进制文件,用一个字节进行单字节异或编码,我试图对文件进行暴力攻击,并将生成文件的哈希值与原始文件进行比较,但找不到,我与作者确认了原始哈希值

我写的代码

#!/usr/bin/env python3

def bin_xor(data, key):
    for i in range(len(data)):
        data[i] ^= key
    return data

data = bytearray(open('sample',  'rb').read())
for key in range(0x00,0xff):
    decoded = bin_xor(data, key)
    name = str(key) + '.bin'
    open(name, "wb").write(decoded)

它将生成255.bin文件,然后我比较文件的散列,但没有找到它。

范围内使用
0xff
的停止值,实际上您缺少
0xff
本身

摘录自:

对于正阶跃,范围r的内容由 公式r[i]=开始+步骤*i,其中i>=0,r[i]<停止

您应该改为使用
0x100
作为停止值

for key in range(0x00,0x100):

谢谢你的评论,我确实错过了0xff,但答案仍然不正确,我不确定。谢谢,这似乎是散列中的一个输入错误。谢谢。我让一位同事使用单字节xor“加密”,我立即看到了xor字节,因为有一段数据是0x00,所以xor字节很明显。如果你想要加密,使用真正的加密,比如AES.thank@zaph我不是在寻找真正的加密,我只是在破译一个文件,但一切都完成了,这是我写的散列中的一个输入错误。