hashlib:加密
作用:加密和校验
1、只要明文相同,密文就是相同
2、只要明文不相同,密文就是不相同
3、不能反译(不能解密)
加密步骤:
1、加密的内容
2、将要加密的内容转换成字节
最常用的是md5,平时加密的时候使用sha1
yulin:45184a42316254195185b5f05f5dbcd8
md5:校验(因为被破解,不能当做加密)
import hashlib
md5 = hashlib.md5() # 初始化md5加密工具
md5.update("yulin123".encode("utf-8")) # 编码集无关,只要转二进制
print(md5.hexdigest())
yulin:92b2e43a7093b80ddcaa36dbda57f893be717501
sha1:加密
import hashlib
sha1 = hashlib.sha1() # 初始化sha1加密工具
sha1.update("yulin123".encode("utf-8")) # 编码集无关,只要转二进制
print(sha1.hexdigest())
sha512
import hashlib
sha512 = hashlib.sha512() # 初始化sha512加密工具
sha512.update("yulin123".encode("utf-8")) # 编码集无关,只要转二进制
print(sha512.hexdigest())
固定加盐:
import hashlib
md5 = hashlib.md5("可乐".encode("utf-8"))
md5.update("yulin123".encode("utf-8"))
print(md5.hexdigest())
动态加盐:
import hashlib
user = input("username:")
pwd = input("password:")
md5 = hashlib.md5(user.encode("utf-8"))
md5.update("yulin123".encode("utf-8"))
print(md5.hexdigest())
ss = "yulinisliangzai"
s = "yulin"
s1 = "is"
s2 = "liangzai"
import hashlib
md5 = hashlib.md5()
md5.update(ss.encode("utf-8"))
print(md5.hexdigest())
md5 = hashlib.md5()
md5.update(s.encode("utf-8"))
md5.update(s1.encode("utf-8"))
md5.update(s2.encode("utf-8"))
print(md5.hexdigest())
校验:2f8a736eeb307a27f1998cfd07f22440
import hashlib
f = open(r"/Users/ylinn/python_pycharm/day17/python-3.8.5-macosx10.9.pkg", "rb")
md5 = hashlib.md5()
while True:
msg = f.read(1024)
if msg:
md5.update(msg)
else:
print(md5.hexdigest()) # 2f8a736eeb307a27f1998cfd07f22440
break