计算python 3中整数的MD5哈希值?

时间:2016-11-03 16:42:26

标签: python-3.x md5

我需要使用python 3来计算整数的散列。是否有比以下更清晰,更有效的解决方案?

>>> import hashlib
>>> N = 123
>>> hashlib.md5(str(N).encode("ascii")).hexdigest()
'202cb962ac59075b964b07152d234b70'

转换为unicode字符串然后将其解码为字节数组似乎很奇怪。

2 个答案:

答案 0 :(得分:2)

MD5等加密哈希只能应用于字节。有一种更有效的方法可以将数字编码为字节,但您仍然需要遵循合同。

>>> hashlib.md5(int(-123).to_bytes(8, 'big', signed=True)).hexdigest()
'fc1063e1bcb35f0d52cdceae4626c39b'

答案 1 :(得分:1)

Ignacio的答案是完美的,但是如果您需要使用python 2和python 3的代码,并且如果您安装了NumPy,那么这很有效:

>>> import numpy as np
>>> import hashlib.md5
>>> N = 123
>>> hashlib.md5(np.int64(N)).hexdigest()
'f18b8dbefe02a0efce281deb55a209cd'