# 不管算法多么不同,摘要的功能始终不变
# 对于相同的字符串使用同一个算法进行摘要,得到的值总是不变的
# 使用不同算法对相同的字符串进行摘要,得到的值应该不同
# 不管使用什么算法,hashlib的方式永远不变
# sha 算法 随着 算法复杂程度的增加 我摘要的时间成本空间成本都会增加
# 摘要算法
# 密码的密文存储
# 文件的一致性验证
# 在下载的时候 检查我们下载的文件和远程服务器上的文件是否一致
# 两台机器上的两个文件 你想检查这两个文件是否相等
import hashlib # 提供摘要算法的模块
ret = hashlib.md5()
ret.update(b'a')
print(ret.hexdigest()) # 打印结果:c81e728d9d4c2f636f067f89cc14862c
# 加盐
# 可以给 字符在摘要的时候添加新的加密方法
import hashlib
md5 = hashlib.md5(bytes('yan',encoding='utf-8')+b'1357') # 加盐
# 加盐 # 冬天太加盐
md5.update(b'chaoqi')
print(md5.hexdigest())
# 分段 摘要
# 分段摘要 读出的内容是一样的
import hashlib # 提供摘要算法的模块
ret = hashlib.md5()
ret.update(b'cq')
ret.update(b'2020') # ret.update(b'cq2020') 这样写 等于 分开的
print(ret.hexdigest()) # 打印结果:db7fa86804c49a05c0cdde3d0036a8a0
# 打印结果:db7fa86804c49a05c0cdde3d0036a8a0
# 分开写 和 写一起是一样的
# 用户登录
username = input('use:')
password = input('pwd:')
with open('q') as f:
for i in f:
use,pwd,tp = i.split('|')
md5 = hashlib.md5()
md5.update(bytes(password,encoding='utf-8'))
md5_pwd = md5.hexdigest()
if use == username and md5_pwd == pwd:
print('ok')
else:
print('no')