#hashlib 这个模块是一堆加密算法的集合体,哈希算法的加密方式不止一种
https://www.cmd5.com/ md5解密
# 应用场景:在需要效验功能时使用
用户密码的 => 加密,解密
相关效验的 => 加密,解密
#哈希算法也叫摘要算法,相同的数据始终得到相同的输出,不同的数据得到不同的输出。
#(1)哈希将不可变的任意长度的数据,变成具有固定长度的唯一值
(2)字典的键值对映射关系是通过哈希计算的,哈希存储的数据是散列(无序)
##mad加密(相比而言hmac加密的算法不会被破解)
加密效率快 通过的加密精密 方法安全性稍差 位数是32位
# 基本用法 # (1)创建一个md5算法的对象 # (2)把想要加密的字符串通过update方法更新到hs这个对象当中去 # 参数是二进制字节流 # (3)返回的是32位16进制的字符串 # 加盐(加key 只有你自己知道的明文) 目的:增加密码的复杂度
# 加盐是在用md5后者是sha1()或者sha512()时候假如参数key
# 在hashlib.md5(key) # 动态加盐
hs = hashlib.md5() hs.update("wangwenshuaige".encode("utf-8")) res = hs.hexdigest() print(res,len(res)) # a9d3c3ad36ff18b5bc7be96295df079b 32 # 加盐(加key 只有你自己知道的明文) 目的:增加密码的复杂度 hs = hashlib.md5("Xboyww_".encode("utf-8")) hs.update("123".encode("utf-8")) res = hs.hexdigest() print(res) # 1ea36fffc2174b753b4c47d3deeaca60 # 动态加盐 import random res = str(random.randrange(10000,1000000)) hs = hashlib.md5(res.encode()) hs.update("aabbccdd".encode()) res = hs.hexdigest() print(res) # 485e1769395b018243d7ee16f2540219
## sha
加密效率慢,算法相对来说 安全性稍高
# 1.创建一个对象
# 2. 对象.update(key) 写入的数据都是字节流的
# 比如:hs = hashlib.sha1()
hs.update("xboyww_123".encode("utf-8"))
hs = hashlib.sha1() hs.update("xboyww_123".encode("utf-8")) res = hs.hexdigest() # 返回的加密字符串长度是40位 print(res,len(res)) # 4f584b41e8cca8c45f4875ddbfa8113dffa36e31 40 # 加盐 hs = hashlib.sha1("PPUU".encode("utf-8")) hs.update("xboyww_123".encode()) res = hs.hexdigest() print(res) # 744316f7f3c985b49c3b0412f5e8444ea861c4d1 # sha512 hs = hashlib.sha512() hs.update("12345".encode()) res = hs.hexdigest() # 返回的字符串长度是128位 print(res,len(res)) # 3627909a29c31381a071ec27f7c9ca97726182aed29a7ddd2e54353322cfb30abb9e3a6df2ac2c20fe23436311d678564d0c8d305930575f60e2d3d048184d79 128
扫描二维码关注公众号,回复:
6341464 查看本文章