首页 > 解决方案 > 如何使用Hashlib对一个数字进行MD5散列?

问题描述

似乎每个人都在这样做:

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)

不工作,我已经尝试了很多其他的变化。什么是正确的语法?

标签: pythonmd5hashlib

解决方案


散列对字节序列进行操作。

Python 中的整数只是一个逻辑值。它没有明确的大小或字节表示。如果要对数字进行哈希处理,则需要在对其进行哈希处理之前确定将数字放入的形式。

最简单的选择是散列数字的字符串表示形式。通过调用str和散列该结果来做到这一点。例如

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)

执行此操作的正确方法完全取决于您到底要完成什么,而您没有告诉我们。


推荐阅读