Skip to main content
 首页 » 编程设计

python之它是这个 Python 脚本中的 MD5 摘要吗

2025年05月04日18zengkefu

我正在尝试理解前几天在 Stackoverflow 上给我的这个简单的 Python hashlib 代码:

import hashlib 
m = hashlib.md5() 
m.update("Nobody inspects") 
m.update(" the spammish repetition here") 
m.digest() 
'\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9' 
m.digest_size 
16 
m.block_size 
64 
print m 

我认为 print m 会向我显示短语的 MD5 摘要:“Nobody inspects the spammish repetition here”,但结果我在本地主机上得到了这一行:

<md5 HASH object @ 01806220> 

奇怪,当我刷新页面时,我又得到了一行:

<md5 HASH object @ 018062E0> 

每次刷新时,我都会得到另一个值:

md5 HASH object @ 017F8AE0

md5 HASH object @ 01806220

md5 HASH object @ 01806360

md5 HASH object @ 01806400

md5 HASH object @ 01806220

为什么会这样?我想,我在每一行中使用“@”流动的内容并不是真正的摘要。那这是什么?以及如何在此代码中显示 MD5 摘要?

我的 python 版本是 Python 2.5,我目前使用的框架是 webapp(我已经从“Google App Engine”下载了它和 SDK)

请您参考如下方法:

hashlib.hash 对象没有实现它自己的 __str__,所以使用默认的 to-string 操作,打印类名后跟它的 id(地址)。

(使用 .hexdigest() 获取十六进制 MD5 字符串。)