转自https://my.oschina.net/duhaizhang/blog/67214
MD5模块用于产生消息摘要,康用来判断文件是否相同。
python的md5模块使用非常简单,包括以下几个函数:
- md5.new([arg])
- 返回一个md5对象,如果给出参数,则相当于调用了update(arg)
- 返回字符串s的md5
- md5.updte(arg)
- 用string参数arg更新md5对象。即将要计算arg的消息摘要值。
- md5.digest()
- 返回16字节的摘要,由传给update的string生成,摘要没有ascii字符
- md5.hexdigest()
- 以16进制的形式返回摘要,32位
md5.md5(s)
注意:如果m.update(a)之后在 m.update(b),那么就相当于m.update(a+b)
步骤:
01、导入md5模块
import md5 |
02、得到一个新的md5对象
m = md5.new() |
03、用一个字符串更新md5对象
s = "hahaha" m.update(s) |
04、得到该字符串(这里是s)的摘要
print m.degest() |
05、或者得到16进制的摘要(这个就是我们想要的)
print m.hexdigest() |
这会得到一个字符串,长度为32位
要计算MD5值,不仅可以使用md5模块,还可以使用hashlib模块。hashlib是个专门提供hash算法的库,现在里面包括md5, sha1, sha224, sha256, sha384, sha512,使用非常简单、方便。md5经常用来做用户密码的存储。而sha1则经常用作数字签名。
下面主要记录下其中的md5加密方式
- >>> import hashlib
- >>> m = hashlib.md5()
- >>> m.update("Nobody inspects")
- >>> m.update(" the spammish repetition")
- >>> m.digest()
- '\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'
- >>> m.hexdigest()
- 'bb649c83dd1ea5c9d9dec9a18df0ffe9'
对以上代码的说明:
1.首先从python直接导入hashlib模块
2.调用hashlib里的md5()生成一个md5 hash对象
3.生成hash对象后,就可以用update方法对字符串进行md5加密的更新处理
4.继续调用update方法会在前面加密的基础上更新加密
5.加密后的二进制结果
6.十六进制结果