似乎每个人都在这样做:
import hashlib
# initializing string
str = "GeeksforGeeks"
# encoding GeeksforGeeks using encode()
# then sending to md5()
result = hashlib.md5(str.encode())
但是,我想对纯数字进行哈希处理。像
之类的东西result = hashlib.md5(0)
#or
var = 5
result = hashlib.md5(var)
无效,并且我尝试了许多其他变体。什么是正确的语法?
散列以字节的序列进行操作。
Python中的整数只是一个逻辑值;它没有确定的大小或字节表示形式。如果要对数字进行哈希处理,则需要在对数字进行哈希处理之前决定将其放入哪种形式。
最简单的选择是将数字的字符串表示形式散列。为此,请调用str
并对该结果进行哈希处理。 E.g
var = 5
hash_input = str(var)
result = hashlib.md5(hash_input)
另一种选择是选择固定大小,然后对数字的二进制表示进行散列:
var = 5
hash_input = struct.pack('<I', var) # Little-endian 32-bit unsigned
result = hashlib.md5(hash_input)