计算 python 中整数的 MD5 散列 3?

Computing the MD5 hash of an integer in python 3?

我需要使用 python 计算整数的哈希值 3. 是否有比以下更清洁、更高效的解决方案?

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

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

MD5 等加密散列只能应用于字节。有更有效的方法将数字编码为字节,但您仍然需要遵守约定。

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

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

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