一、hashlib
md5和sha算法通过消息摘要算法生成定长的消息摘要,消息摘要算法是不可逆的。但同一段消息通过摘要算法后得到的值是一样的,可一通过比对消息摘要验证数据的完整性。
sha算法比MD5算法安全,但所需的时间也稍长。
1、原始消息摘要
#md5加密
import hashlib,hmac
m=hashlib.md5()
m.update(b'hello')
print(m.hexdigest())
#sha256加密
hash=hashlib.sha256()
hash.update(b'admin')
print(hash.hexdigest())
2、加盐(salt)后摘要
由于同一个消息通过摘要算法得到的摘要是相同的,因此可以通过撞库的方式得到原始消息值。解决方式是,添加一个salt拼接原始消息后再进行计算。
import hashlib
hash=hashlib.md5(b'856oaF01')
hash.update(b'admin')
print(hash.hexdigest())
#以上等价与
hash=hashlib.md5()
hash.update(b'856oaF01admin')
print(hash.hexdigest())
二、hmac
HAMC它内部对我们创建 key 和 内容 再进行处理然后再加密,相当安全。一般用于挑战应答。
import hmac
h=hmac.new(b'123')
h.update(b'admin')
print(h.hexdigest())
#内部可能将原字符串变成了"1a2dm3in"或"a1d2min3"等等