当前位置:编程学习 > 网站相关 >>

Python3.2 --md5

python3.x已经把md5 module移除了。要想用md5得用hashlib module,以下是帮助手册中给的标准调用
1
import hashlib
2
m = hashlib.md5()
3
m.update(b"Nobody inspects the spammish repetition") #参数必须是byte类型,否则报Unicode-objects must be encoded before hashing错误
4
md5value = m.hexdigest()
5
print(md5value)  #bb649c83dd1ea5c9d9dec9a18df0ffe9
其实可简写,如下面的md5的例子,hashlib.md5(data),就可以了

但是对中文字符串md5怎么办?
中文字符在Python中是以unicode存在的,同一个字符串在不同的编码体系下有不同的值,所以在hash前要进行编码,个人建议转为gb2312,因为对比发现,我下载的一个工具算出的md5值是与gb2312编码后算出的md5值一样。(!网上md5的工具很多,是不是所有的md5工具都是这样的,未去考证,有兴趣的可以研究一下)
1
import hashlib
2
data='我是'
3
m = hashlib.md5(data.encode(encoding='gb2312'))
4
print(m.hexdigest())
python 2.7下
1
import md5
2
m = md5.new()
3
m.update("Nobody inspects the spammish repetition")
4
md5value=m.hexdigest()
关于python 下的md5用法,注意 update的叠加性(2.x 3.x)
view sourceprint?
1
h = hashlib.md5()  www.zzzyk.com
2
h.update(b"Nobody inspects ")
3
h.update(b"the spammish repetition")
4
md5value=h.hexdigest()
5
print(md5value)


作者:kuqoi
补充:综合编程 , 安全编程 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,