【发布时间】:2017-09-24 07:34:16
【问题描述】:
鉴于此代码:
import hashlib
h = hashlib.md5()
h.update(str("foobar").encode('utf-8'))
是否会在任何系统上返回相同的摘要? 如果没有,有没有办法确保它做到了?
【问题讨论】:
标签: python python-3.x md5 portability hashlib
鉴于此代码:
import hashlib
h = hashlib.md5()
h.update(str("foobar").encode('utf-8'))
是否会在任何系统上返回相同的摘要? 如果没有,有没有办法确保它做到了?
【问题讨论】:
标签: python python-3.x md5 portability hashlib
是的,正确实现的 MD5 算法将始终为任何系统上的相同字节序列生成相同的摘要,因为这正是 MD5 等校验和算法的用途。
附带说明:"foobar" 已经是一个字符串,所以str("foobar") 在上面的代码中什么都不做。正确版本的代码是:
import hashlib
h = hashlib.md5()
h.update("foobar".encode('utf-8'))
另外,请注意 MD5 不是安全的加密哈希函数。可以将其用作校验和以防止意外损坏,但不能用于验证数据是否未被故意更改。
【讨论】: