Python模块_hashlib模块

Posted iamjames

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python模块_hashlib模块相关的知识,希望对你有一定的参考价值。

hashlib提供摘要算法,也叫哈希算法

hash和md5都是单向不可逆的,hashlib模块 主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法

 

 举个应用例子:用户密码存放数据库如果用明文记录,一旦数据库泄漏,用户密码全知道,所以要用密文记录

import hashlib
obj = hashlib.md5()
obj.update("123456".encode("utf-8"))  #假设用户输入的密码是123456
obj_result = obj.digest()
obj_result2 = obj.hexdigest()
print(obj_result) #结果是 b‘\xe1\n\xdc9I\xbaY\xab\xbeV\xe0W\xf2\x0f\x88>‘
print(obj_result2) #结果是 e10adc3949ba59abbe56e057f20f883e,一般就是以这个存放的
print(obj_result.decode("ASCII")) #报错,无法decode, bytes应该可以转回str才对
obj.update("123456".encode("utf-8"))
print(obj.hexdigest()) #这个为什么跟上面的123456的md5不一样呢, #ea48576f30be1669971699c09ad05c94,,# 因为2次update是累加的,所以字符串其实是"123456123456"

 

假设用户的确是使用了上面的简单密码,那我们要为他的密码加点‘盐‘,或者叫‘味精‘,可以利用update累加的特点处理

#思来想去,这个加盐的方法其实没用,因为‘加点盐‘是固定的,特征明显
obj.update("加点盐".encode("utf-8")) #
obj.update("123456".encode("utf-8")) #真正的密码
print(obj.hexdigest())

 

以上是关于Python模块_hashlib模块的主要内容,如果未能解决你的问题,请参考以下文章

hashlib加密模块_python

Python常用模块-摘要算法(hashlib)

Python中hashlib模块

Python 学习之路 - 反射,hashlib

铁乐学python26_hashlib+configparser+logging模块

python基础学习日志day5--hashlib模块