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模块的主要内容,如果未能解决你的问题,请参考以下文章