【发布时间】:2015-08-16 19:08:04
【问题描述】:
我需要获取一个对象的 base64 编码的 MD5 哈希,其中该对象是存储为文件 fname 的图像。
我试过这个:
def get_md5(fname):
hash = hashlib.md5()
with open(fname) as f:
for chunk in iter(lambda: f.read(4096), ""):
hash.update(chunk)
return hash.hexdigest().encode('base64').strip()
但是,我认为这是不对的,因为它返回的字符串包含太多字符。我的理解是它需要 24 个字符长。我明白了
NjJiM2RlOWMzOTYxYmM3MDI5Y2Q1NzdjOTQ5YWRlYTQ=
我也尝试了其他一些类似的方法,例如,一种不执行块循环的方法。它们都返回相同的字符串。
(我后来需要 base64 编码的 MD5 哈希的操作失败了,我想这可能是原因。)
【问题讨论】:
-
你试过二进制输出而不是十六进制输出吗?
-
你的意思是 .digest() 而不是 hexdigest()?那行得通!想写答案吗? :)