gpt4 book ai didi

python - 使用多字节 key 对文件进行 XORing

转载 作者:太空狗 更新时间:2023-10-30 00:03:16 25 4
gpt4 key购买 nike

我只是想用多字节 key 对文件进行异或。 key 的长度可能会有所不同。返回以下错误:

TypeError: ord() expected string of length 1, but int found

这是我现在正在处理的内容。

def xor(data, key):
l = len(key)

decoded = ""
for i in range(0, len(data)):
decoded += chr(ord(data[i]) ^ ord(key[i % l]))
return decoded

data = bytearray(open('myfile.bin', 'rb').read())

key = '\x2a\x2b\x2c\x5e\x25\x44'
a = xor(data, key)
print a

我知道我遗漏了一些简单但无法放置的东西。

最佳答案

bytearray 是......字节数组......不是char

您不能在字节上使用 ord()。这没有任何意义。

试试看:

def xor(data, key):
l = len(key)

decoded = ""
for i in range(0, len(data)):
decoded += chr(data[i] ^ ord(key[i % l]))


return decoded

不是很Pythonic ...我可能会做得更好。但似乎至少有效。


编辑:如评论中所述,混合字节和 unicode 字符不是一个好主意。

当您在这里使用字节时,您的 key 也应该是字节。简化代码作为副作用:

def xor(data, key):
l = len(key)
return bytearray((
(data[i] ^ key[i % l]) for i in range(0,len(data))
))


data = bytearray(open('myfile.bin', 'rb').read())

key = bytearray([0x2a,0x2b,0x2c,0x5e,0x25,0x44])

关于python - 使用多字节 key 对文件进行 XORing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17253086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com