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

有帮助吗?

解决方案

您可以使用 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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top