我只是在python 3.4.3中测试md5哈希。我不明白我得到的结果。我想在我的sql数据库中比较一个哈希密码,但每次尝试这样做我得到一个不同的结果。这是我创建的代码来说明我的问题:
import hashlib
x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
p = '5'
for i in x:
k = hashlib.md5(p.encode('utf-8'))
print(k)
结果:
<md5 HASH object @ 0x02A07B10>
<md5 HASH object @ 0x02A07CF0>
<md5 HASH object @ 0x02A07B10>
<md5 HASH object @ 0x02A07CF0>
<md5 HASH object @ 0x02A07B10>
<md5 HASH object @ 0x02A07CF0>
<md5 HASH object @ 0x02A07B10>
<md5 HASH object @ 0x02A07CF0>
<md5 HASH object @ 0x02A07B10>
<md5 HASH object @ 0x02A07CF0>
<md5 HASH object @ 0x02A07B10>
答案 0 :(得分:4)
您的输出正在打印HASH
对象的地址,而不是MD5摘要本身。
如果您想查看,请在该对象上调用digest()
。这将返回MD5的128位输出为16字节字符串。如果要以十六进制打印出来,请改用hexdigest()
:
k = hashlib.md5(p.encode('utf-8')).hexdigest()