模块-->hashlib
hshlib模块
相当于对代码进行加密
-
MD5 结果是16位的字节码
import hashlib msg = hashlib.md5() #创建一个md5 的对象 msg.update("你好呀".encode("utf-8")) #把需要加密的内容添加给这个对象, 注意:update()内的参数必须是字节,如果不是就encode为字节 msg = msg.hexdigest() #加密 print(msg) 结果:4f65fdb33e0f2bd0de6bd1b41fdea968
如果数据量很大,可以分块多次调用update(),最后计算的结果是一样的:
粗略原因是:加密是对每一个字节进行加密,只要需要加密的内容是一致得,无论分多少行,加密一次,那加密结果都是一样的
import hashlib md5 = hashlib.md5() md5.update('how你好啊,我不好'.encode('utf-8')) print(md5.hexdigest()) # 结果: 3bfa4bfb7b59a59f27c24ebdd89cd13c
import hashlib
md5 = hashlib.md5() md5.update('how'.encode('utf-8')) md5.update('你好啊,我不好'.encode('utf-8')) print(md5.hexdigest()) # 结果: 3bfa4bfb7b59a59f27c24ebdd89cd13c
加盐
# 创建md5对象时在括号内添加内容就叫"加盐",为了提高安全性.同样是字节,需要进行解码
import hashlib msg = hashlib.md5(",".encode("utf-8")) #创建md5对象 msg.update("你好呀".encode("utf-8")) msg = msg.hexdigest() print(msg) 结果:caaac0ad1f544161e200772008ccd6ba
-
SHA1
结果40位字节码,更安全,但是加密时间长,运行慢,效率低
import hashlib msg = hashlib.sha1(",".encode("utf-8")) #创建一个sha1对象 msg.update("你好呀".encode("utf-8")) msg = msg.hexdigest() print(msg) 结果:bd9d06b40de7aae7bb66eb2db356805941e882de
加盐方式与MD5加盐方式相同
SHA256 结果64位
SHA512 结果128位
越长越安全