我有一个相当奇怪的问题。对于分布式哈希表,我需要能够对 MD5 哈希进行一些简单的数学运算。这些包括总和(由哈希表示的数字总和)和模运算。现在我想知道实现这些操作的最佳方法是什么。我正在使用 hashlib 来计算哈希值,但是由于我得到的哈希值是字符串,我如何用它们计算?
问问题
8954 次
1 回答
35
您可以使用该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')
对于第二种情况,使用or转换实际上更容易binascii.hexlify
:
>>> int(h.digest().encode('hex'), 16)
188041611063492600696317361555123480284L
>>> int(binascii.hexlify(h.digest()), 16)
188041611063492600696317361555123480284L
于 2010-04-24T00:52:48.797 回答