問題描述:
初次使用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())