Python 哈希操作

18 投票
1 回答
11578 浏览
提问于 2025-04-15 21:58

我遇到了一个比较奇怪的问题。为了实现一个分布式哈希表,我需要对MD5哈希进行一些简单的数学运算。这些运算包括求和(用哈希表示的数字和)和取模运算。现在我在想,怎么才能最好地实现这些运算呢?

我正在使用hashlib来计算哈希值,但因为我得到的哈希值是字符串形式的,那我该怎么用这些字符串进行计算呢?

1 个回答

37

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

撰写回答