Python之hashlib模块、hmac模块介绍

hashlib模块用于加密相关的操作,代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法。
在python3中已经废弃了md5和sha模块。

摘要算法又称为哈希算法,散列算法。它通过一个函数,把任意长度的数据转换为一个长度固顶的数据串(通常用16进制的字符串表示)用于加密相关的操作。

MD5 算法 三个特点:

1.内容相同则hash运算结果相同,内容稍微改变则hash值则变;
2.不可逆推;
3.相同算法:无论校验多长的数据,得到的哈希值长度固定。

md5加密

>>> import hashlib
>>> h=hashlib.md5('admin'.encode('utf8'))
>>> h.hexdigest()
'21232f297a57a5a743894a0e4a801fc3'

sha256加密

>>> h=hashlib.sha256('admin'.encode('utf8'))
>>> h.hexdigest()
'8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918'

以上加密算法虽然很厉害,但仍然存在缺陷,通过撞库可以反解。所以必要对加密算法中添加自定义key再来做加密。

‘加盐’加密

>>> h = hashlib.md5('exin'.encode('utf-8'))  #加盐
>>> h.update('admin'.encode('utf8'))
>>> h.hexdigest()
'39bbf89fa70b780d40d7125ff3c6f434'

hmac加密

HMAC是密钥相关的哈希运算消息认证码,HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。

import hmac
>>> h=hmac.new('python'.encode('utf8'))  #密钥
>>> h.update('helloworld'.encode('utf-8'))  #内容
>>> h.hexdigest()
'b3b867248bb4cace835b59562c39fd55'

 

posted @ 2018-09-17 16:57  恋853雨  阅读(286)  评论(0编辑  收藏  举报