^:'str'和'int'XOR解密不支持的操作数类型

时间:2018-10-24 10:30:41

标签: python

我正在尝试按如下方式解密单字节XOR(按原样执行):

from binascii import unhexlify

if __name__ == "__main__":

    encoded = unhexlify("7f454c467f454c467f454c46")
    for key in range(256):
        decoded = ''.join(chr(b ^ key) for b in encoded)
        if decoded.isprintable():
            print(key, decoded)

执行时出现以下错误:

File "temp.py", line 8, in <module>
    decoded = ''.join(chr(b ^ key) for b in encoded)
File "temp.py", line 8, in <genexpr>
    decoded = ''.join(chr(b ^ key) for b in encoded)
TypeError: unsupported operand type(s) for ^: 'str' and 'int'

有什么作用?谢谢!

2 个答案:

答案 0 :(得分:1)

在进行XOR之前,使用ord将字符转换为整数。

decoded = ''.join(chr(ord(b) ^ key) for b in encoded)

答案 1 :(得分:1)

您的问题是spread是字符串,而overflow: scroll !important; overflow-y: scroll !important;是整数。

如果您想使用b,则两个变量都必须是整数-您可以使用key,这将解决您的问题。

^