首页 > 技术文章 > md5模块(Python内置模块)和hashlib模块

WangAoBo 原文

转自https://my.oschina.net/duhaizhang/blog/67214

MD5模块用于产生消息摘要,康用来判断文件是否相同。

python的md5模块使用非常简单,包括以下几个函数:

  • md5.new([arg])
    • 返回一个md5对象,如果给出参数,则相当于调用了update(arg)
  • md5.md5(s)
    • 返回字符串s的md5
  • md5.updte(arg)
    • 用string参数arg更新md5对象。即将要计算arg的消息摘要值。
  • md5.digest()
    • 返回16字节的摘要,由传给update的string生成,摘要没有ascii字符
  • md5.hexdigest()
    • 以16进制的形式返回摘要,32位

注意:如果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加密方式

[python]  view plain copy print ?
  1. >>> import hashlib  
  2.   
  3. >>> m = hashlib.md5()  
  4.   
  5. >>> m.update("Nobody inspects")  
  6.   
  7. >>> m.update(" the spammish repetition")  
  8.   
  9. >>> m.digest()  
  10.   
  11. 'xbbdx9cx83xddx1exa5xc9xd9xdexc9xa1x8dxf0xffxe9'  
  12.   
  13. >>> m.hexdigest()  
  14.   
  15. 'bb649c83dd1ea5c9d9dec9a18df0ffe9'  

 

对以上代码的说明:

1.首先从python直接导入hashlib模块

2.调用hashlib里的md5()生成一个md5 hash对象

3.生成hash对象后,就可以用update方法对字符串进行md5加密的更新处理

4.继续调用update方法会在前面加密的基础上更新加密

5.加密后的二进制结果

6.十六进制结果

推荐阅读