基本概念
1、什么叫hash:hash是一种算法(不同的hash算法只是复杂度不一样)(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法),该算法接受传入的内容,经过运算得到一串hash值
2、hash值的特点是(hash值/产品有三大特性:):
2.1 只要传入的内容一样,得到的hash值必然一样=====>要用明文传输密码文件完整性校验
2.2 不能由hash值返解成内容=======》把密码做成hash值,不应该在网络传输明文密码(只能有内容返回hash值)
2.3 只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的
基于2.1和2.3可以做文件下载一致性的校验
基于2.1和2.2可以对用户密码进行加密
产生hash值的三个阶段
import hashlib # # ######## 256 ######## # # 1、造出hash工厂 hash = hashlib.sha256() # # 2、运送原材料#工厂传入的原材料都是bytes类型 hash.update('alvin'.encode('utf8')) # # 3、产出hash值 print(hash.hexdigest()) # e79e68f070cdedcfe63eaf1a2e92c83b4cfb1b5c6bc452d214c1b7e77cdfd1c7 import hashlib m=hashlib.md5() m.update('你好呀!'.encode('utf-8')) print(m.hexdigest()) #9e49eb8e75b9a87424e388b862ea5f83
检验文件一致性
# File 1 import hashlib m = hashlib.md5() with open(r'G:/logging模块配图.png','rb') as f: for line in f: m.update(line) print(m.hexdigest()) #47a6b079cc33a4f312786b46e61e0305 #File 2 import hashlib m = hashlib.md5() with open(r'H:/logging模块配图.png','rb') as f: for line in f: m.update(line) print(m.hexdigest())