一、什么是hash算法
hash是一种算法,该算法接受传入的内容,经过运算得到一串hash值
如果把hash算法比喻为一座工厂
那传给hash算法的内容就是原材料
生成的hash值就是生产出的产品
二、为何要用hash算法
2.1 hash值/产品有三大特性:
1、只要传入的内容一样,得到的hash值必然一样
2、只要我们使用的hash算法固定,无论传入的内容有多大,
得到的hash值的长度是固定的
3、不可以用hash值逆推出原来的内容
基于1和2可以在下载文件时做文件一致性校验
基于1和3可以对密码进行加密
三、如何使用hashlib模块算法
import hashlib #1、造出hash工厂 m=hashlib.md5() #2、运送原材料 m.update('你好,吃饭了吗?'.encode('utf-8' )) # 加密内容 m.update('啊花'.encode('utf-8' )) # 追加加密内容 #3、产出hash值 print(m.hexdigest()) # 使用m调用hexdigest得到m的hash加密数据
运行结果:
38d1d3908cc0d69e9b17f145c43e869d # hash加密数据
应用一:文件一致性校验(同一文件,以不同的名字命名且放在不同位置,运算出来的hash值是一样的,如‘代码块一’与‘代码块二’)
代码块一:
#1、造出hash工厂 m=hashlib.md5() #2、运送原材料 with open (r'E:\01.mp4','rb' ) as f: for line in f: m.update(line) #3、产出hash值 print(m.hexdigest()) 运算结果: 38d1d3908cc0d69e9b17f145c43e869d
代码块二:
#1、造出hash工厂 m=hashlib.md5() #2、运送原材料 with open (r'D:\aaa.mp4','rb' ) as f: for line in f: m.update(line) #3、产出hash值 print(m.hexdigest()) 运算结果: 38d1d3908cc0d69e9b17f145c43e869d
应用二:对明文密码进行加密
password=input('>>>: ') m=hashlib.md5() m.update('天王盖地虎'.encode('utf-8')) m.update(password.encode('utf-8')) print(m.hexdigest()) 加密后的运行结果 #95bd6eafefdf51d8b153785f3fb6263d
四、如何使用hmac模块算法
import hmac #导入hmac模块功能,使用方法与hashlib是一样的 m=hmac.new('小鸡炖蘑菇'.encode('utf-8')) m.update('hello'.encode('utf-8')) print(m.hexdigest())
原文地址:http://www.cnblogs.com/xu0927/p/16854993.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性