二进制转换和python中的XOR

时间:2015-03-11 10:12:25

标签: python

我正在做一个破译一次性密码的工作(7个句子,所有7个句子中每个字符位置的重复键)。我通过猜测工作来解决它,我需要将猜测字母的二进制值与密码字符的二进制值进行异或运算以获得密钥。

但是,我不能对Python返回的二进制值进行异或,因为它们是字符串格式。我不能将它们转换为整数,因为我需要'0b'部分,但我也不能对它进行异或,因为它是一个字符串。

有关如何解决此问题的任何建议吗?

1 个答案:

答案 0 :(得分:4)

Python中的整数支持二进制按位运算; binary bitwise operators获取整数操作数并生成带有更改位的新整数,就像在C代码中一样。

将您的字符串(可能是类似0b1001101)转换为整数,使用^ XOR运算符。如果最后需要字符串输出,则可以在整数上再次使用bin()

>>> bin(102)
'0b1100110'
>>> 102 ^ 255
153
>>> bin(102 ^ 255)
'0b10011001'

如果您有ASCII字节(Python 2字符串中的字符是字节),请使用ord()获取整数表示,chr()再次返回字节(字符)。