【问题标题】:What is a quick method of string to integer conversion in Python 2.7Python 2.7中字符串到整数转换的快速方法是什么
【发布时间】: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")

但是,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

不幸的是,我使用复制粘贴从我的终端获取 hexMessage 和 hexKey 的字符串值,然后在我的 python 脚本中使用0x 前置以获取可以是XORed 的文字值。很明显,我做错了非常

我的问题是:有什么快速方法可以将我的 messagekey 字符串变量转换为它们的文字等价物,以便我可以使用 ^ 运算符 XOR 它们?

【问题讨论】:

    标签: python string type-conversion literals


    【解决方案1】:

    据我所知,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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-04
      • 2016-01-31
      • 2018-03-02
      • 1970-01-01
      相关资源
      最近更新 更多