python3.x已經把md5 module移除了。要想用md5得用hashlib module,如下是幫助手冊中給的標準調用
python
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),就能夠了 python3.x
可是對中文字符串md5怎麼辦?
中文字符在Python中是以unicode存在的,同一個字符串在不一樣的編碼體系下有不一樣的值,因此在hash前要進行編碼,我的建議轉爲gb2312,由於對比發現,我下載的一個工具算出的md5值是與gb2312編碼後算出的md5值同樣。(!網上md5的工具不少,是否是全部的md5工具都是這樣的,未去考證,有興趣的能夠研究一下)
工具
import hashlib data='我是' m = hashlib.md5(data.encode(encoding='gb2312')) print(m.hexdigest())
python 2.7下
編碼
import md5 m = md5.new() m.update("Nobody inspects the spammish repetition") md5value=m.hexdigest()
關於python 下的md5用法,注意 update的疊加性(2.x 3.x)
spa
h = hashlib.md5() h.update(b"Nobody inspects ") h.update(b"the spammish repetition") md5value=h.hexdigest() print(md5value)