【发布时间】:2014-06-06 03:43:17
【问题描述】:
我使用的是 Python 2.7.6。我正在研究crib-dragging method of the many time pad attack。文章的作者说将消息和密钥定义为:
message = "Hello World"
key = "supersecret"
我需要XOR这两个字符串的二进制值来获取我的密文。我知道我可以像这样确定字符串的十六进制值的字符串表示形式:
hexMessage = message.encode("hex")
hexKey = key.encode("hex")
但是,hexMessage 和 hexKey 仍然是字符串。如果我想对它们执行(python 本机)XOR,我相信我需要它们是 整数文字(如果我弄错了,请纠正我)。换句话说,我想做一些类似cipherText = hexMesage ^ hexKey 的事情。
如果我print hexMessage, hexKey,我得到:
48656c6c6f20576f726c64 7375706572736563726574
如果我尝试XOR 这些值,我显然会得到一个错误:TypeError: unsupported operand type(s) for ^: 'str' and 'str'。这对我来说并不奇怪,因为我知道这些是十六进制值的字符串表示。我可以这样做:
realHexMessage = 0x48656c6c6f20576f726c64
realHexKey = 0x7375706572736563726574
cipherText = realHexMessage ^ realHexKey
不幸的是,我使用复制粘贴从我的终端获取 hexMessage 和 hexKey 的字符串值,然后在我的 python 脚本中使用0x 前置以获取可以是XORed 的文字值。很明显,我做错了非常。
我的问题是:有什么快速方法可以将我的 message 和 key 字符串变量转换为它们的文字等价物,以便我可以使用 ^ 运算符 XOR 它们?
【问题讨论】:
标签: python string type-conversion literals