【问题标题】:Operations on Python hashes对 Python 哈希的操作
【发布时间】:2010-04-24 00:49:12
【问题描述】:

我遇到了一个相当奇怪的问题。对于分布式哈希表,我需要能够对 MD5 哈希进行一些简单的数学运算。这些包括总和(由哈希表示的数字总和)和模运算。现在我想知道实现这些操作的最佳方法是什么。 我正在使用 hashlib 来计算哈希,但是由于我得到的哈希是字符串,我如何用它们计算?

【问题讨论】:

    标签: python math hash dht hashlib


    【解决方案1】:

    您可以使用hexdigest()方法获取十六进制数字,然后将其转换为数字:

    >>> h = hashlib.md5('data')
    >>> int(h.hexdigest(), 16)
    188041611063492600696317361555123480284L
    

    如果你已经有了digest()的输出,你可以把它转换成十六进制数字:

    >>> hexDig = ''.join('%02x' % ord(x) for x in h.digest())
    >>> int(hexDig, 16)
    188041611063492600696317361555123480284L
    

    编辑

    对于第二种情况,使用.encode('hex')binascii.hexlify 转换实际上更容易:

    >>> int(h.digest().encode('hex'), 16)
    188041611063492600696317361555123480284L
    >>> int(binascii.hexlify(h.digest()), 16)
    188041611063492600696317361555123480284L
    

    【讨论】:

      猜你喜欢
      • 2017-10-02
      • 1970-01-01
      • 1970-01-01
      • 2012-05-23
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      相关资源
      最近更新 更多