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())

猜你喜欢

转载自www.cnblogs.com/iamjames/p/11333319.html