一、什么是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. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性