hashlib
可以将一个字符串数据类型的变量转化成一个定长的密文的字符串,字符串里的每一个字符都是16进制数字。
算法:对同一个字符串,用相同的算法,相同的手段去进行摘要,获取的值总是相同的。对于同一个字符串,不管什么环境、什么语言、多少次执行,使用相同的算法得到的结果永远是相同的。只要不是相同的字符串,得到的结果一定不同。
md5算法比sha算法要快,跟普及一些。
sha算法比md5复杂一些,因为用的人少一些,所以相对更安全。
import hashlib # 摘要算法模块
pwd = 'huashandadizi123'
# md5算法
# 她的结果是一个32位的字符串,她的每一位都是16进制。
md5_obj = hashlib.md5()
md5_obj.update(pwd.encode('utf-8'))
ret = md5_obj.hexdigest()
print(ret,len(ret),type(ret))
e0b4119aa443a3ac7782bf6a5a58473a 32 <class 'str'>
# sha1算法
# 她的结果是一个40位的字符串,她的每一位也是十六进制。
sha_obj = hashlib.sha1()
sha_obj.update(pwd.encode('utf-8'))
ret1 = sha_obj.hexdigest()
print(ret1,len(ret1),type(ret1))
299c74d24d518fcb347c3e206b0c47835479b372 40 <class 'str'>
# 为了防止撞库,可以加盐
md5_obj = hashlib.md5("任意字符作为盐".encode())
md5_obj.update(pwd.encode('utf-8'))
ret = md5_obj.hexdigest()
print(ret,len(ret),type(ret))
137d76f568c5f22f518aa0f42bc2004d 32 <class 'str'>