Python 哈希操作
我遇到了一个比较奇怪的问题。为了实现一个分布式哈希表,我需要对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