Python哈希表的操作

18

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

1个回答

36
你可以使用 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接