Python哈希的操作

cde*_*ker 15 python math hash dht hashlib

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

int*_*jay 28

您可以使用该hexdigest()方法获取十六进制数字,然后将它们转换为数字:

>>> h = hashlib.md5('data')
>>> int(h.hexdigest(), 16)
188041611063492600696317361555123480284L
Run Code Online (Sandbox Code Playgroud)

如果已经有输出digest(),可以将其转换为十六进制数字:

>>> hexDig = ''.join('%02x' % ord(x) for x in h.digest())
>>> int(hexDig, 16)
188041611063492600696317361555123480284L
Run Code Online (Sandbox Code Playgroud)

编辑:

对于第二种情况,实际上使用.encode('hex')或转换更容易binascii.hexlify:

>>> int(h.digest().encode('hex'), 16)
188041611063492600696317361555123480284L
>>> int(binascii.hexlify(h.digest()), 16)
188041611063492600696317361555123480284L
Run Code Online (Sandbox Code Playgroud)