python - 对 Python 哈希的操作

标签 python math hash dht hashlib

我遇到了一个很奇怪的问题。对于分布式哈希表,我需要能够对 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

关于python - 对 Python 哈希的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2702751/

相关文章:

python - 在 python 中观察变量?

python - 使用 Cronjob 更改数据窗口(在 MAC 上)

java - 使用 Java 使用 "N choose K"的字符串字母组合

perl - 如何在 Perl 中获取哈希的唯一部分?

ruby 字符串到哈希的转换

python - Ctypes:将返回的指针映射到结构

python - 使用 keras VGGFace 框架训练 CNN 时 Epoch 未启动

math - 确定任意碱基的位值

math - 如何确定我的卷积是否可分离?

c# - Asp.net MVC - 如何散列密码