我需要使用python 3来计算整数的散列。是否有比以下更清晰,更有效的解决方案?
>>> import hashlib
>>> N = 123
>>> hashlib.md5(str(N).encode("ascii")).hexdigest()
'202cb962ac59075b964b07152d234b70'
转换为unicode字符串然后将其解码为字节数组似乎很奇怪。
答案 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'