Python3.2 --md5

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值一樣。(!網上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)

import hashlib
h = hashlib.md5()
h.update(b"Nobody inspects ")
h.update(b"the spammish repetition")
md5value=h.hexdigest()
print(md5value)






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章