問題描述:
初次使用python3種hashlib模塊的md5加密方法時,對同一個字符串的多次加密結果不同,如下圖所示:

代碼為:
import hashlib
a = hashlib.md5()
a.update('123'.encode(encoding='utf-8'))
print(a.hexdigest())
a.update('123'.encode(encoding='utf-8'))
print(a.hexdigest())
a.update('123'.encode(encoding='utf-8'))
print(a.hexdigest())
解決方案:
通過查找相關文檔發現,如果通過一個md5實例對同一個字符串多次加密時,它實質上是在加密每次明文的疊加。即第一次加密的是“HelloWorld”,第二次加密的是“HelloWorldHelloWorld”,依次類推。正確的使用方式如下圖所示:

代碼為:
import hashlib
a = hashlib.md5()
a.update('123'.encode(encoding='utf-8'))
print(a.hexdigest())
a = hashlib.md5()
a.update('123'.encode(encoding='utf-8'))
print(a.hexdigest())
a = hashlib.md5()
a.update('123'.encode(encoding='utf-8'))
print(a.hexdigest())
