Python3.2 --md5

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)
相關文章
相關標籤/搜索