在Python2.7中,字符串到整数的快速转换方法是什么

2024-06-26 14:30:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是python2.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")

但是,hexMessagehexKey仍然是字符串。如果我想对它们执行(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

不幸的是,我使用copy paste从终端获取hexMessage和hexKey的字符串值,然后在python脚本中用0x作为它们的前缀,以获取可以XOR编辑的文本值。显然,我这样做是非常错误的。你知道吗

我的问题是:有什么快速的方法可以将我的messagekey字符串变量转换成它们的文本等价物,这样我就可以使用^操作符XOR它们了?你知道吗


Tags: key字符串文本message错误encodehexstr
1条回答
网友
1楼 · 发布于 2024-06-26 14:30:08

据我所知,Python中没有直接的方法,但是下面的内容应该可以满足您的需要。你知道吗

基本上,它使用ord将字符串中的每个字符转换为一个数字字节,然后将其格式化为十六进制,将十六进制字符连接在一起,并将其解析为int。你知道吗

def convertToInteger(a):
    return int("".join([format(x, 'x') for x in map(ord, a)]), 16)

message = "Hello World"
print "0x%x" % convertToInteger(message)

输出:

0x48656c6c6f20576f726c64

相关问题 更多 >