Python3.X md5

weixin_33860722發表於2016-07-01

python3.x已經把md5 module移除了。要想用md5得用hashlib module,

import hashlib  
m = hashlib.md5()  
m.update(b"Nobody inspects the spammish repetition") #引數必須是byte型別,否則報Unicode-objects must be encoded before hashing錯誤  
md5value=m.hexdigest()  
print(md5value)  #bb649c83dd1ea5c9d9dec9a18df0ffe9  

其實可簡寫,如下面的md5的例子,hashlib.md5(data),就可以了

但是對中文字串md5怎麼辦?
中文字元在Python中是以unicode存在的,同一個字串在不同的編碼體系下有不同的值,所以在hash前要進行編碼,個人建議轉為gb2312,因為對比發現,我下載的一個工具算出的md5值是與gb2312編碼後算出的md5值一樣。

import hashlib  
data='我是'  
m = hashlib.md5(data.encode(encoding='gb2312'))  
print(m.hexdigest())