一、hashlib模块
1.1 hash是什么
hash是一种算法(Python3.版本里使用hashlib模块代替了md5模块和sha模块,主要提供 SHA1、SHA224、SHA256、SHA384、SHA512、MD5 算法),该算法接受传入的内容,经过运算得到一串hash值。
hash值的特点:
- 只要传入的内容一样,得到的hash值一样,可用于非明文密码传输时密码校验
- 不能由hash值返解成内容,即可以保证非明文密码的安全性
- 只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的,可以用于对文本的哈希处理
hash算法其实可以看成如下图所示的一座工厂,工厂接收你送来的原材料,经过加工返回的产品就是hash值
1.2 hashlib模块的用法
import hashlib
m = hashlib.md5() # 固定的写法,使用md5算法
m.update(b'123456') # 必须进行编码,bytes类型
# m.update(b'456') # 可以叠加之前update的内容
print(m.hexdigest())
二、hmac模块
和hashlib功能一致,也是通过hash算法对密码进行加密。
不同的是hmac更安全,并且可以设置密钥,根据密钥来生成hash值
1.1 hmac模块的用法
import hmac
m = hmac.new(b'abc') # 设置密钥
m.update(b'123456') # 必须进行编码,字节类型
# m.update(b'456')
print(m.hexdigest()) # 生成hash值