您的位置:首页 > 编程语言 > Python开发

python之hash模块加密

2018-06-26 14:27 411 查看
原文链接:http://www.cnblogs.com/Marcki/p/10111951.html

1.什么是hash

    hash是一种算法,该算法接受传入的内容,经过运算得到一串hash值

    1.如果把hash算法比喻为一座工厂

    2.那传给hash算法的内容就是原材料

    3.生成的hash值就是生产出的产品

2.为何要用hash算法

    hash值/产品有三大特性:

    1.只要传入的内容一样,得到的hash值必然一样

    2.只要我们使用是hash算法固定,无论传入的内容有多大,得到的hash值的长度是固定

    3.不可以用hash值逆推出原来的内容

    基于1和2可以在下载文件时做文件一致性校验

    基于1和3可以对密码进行加密

 

import hashlib

两种传值方式:

    1.造出hash工厂

    m=hashlib.md5()                      #hashlib.sha512 :可以选择不同的算法加密,不同的算法的加密结果的长度也会不一样

    2.运送原材料

    m.update('你好啊’.encode('utf-8'))

    3.产出hash值

    print(m.hexdigest)

    

1.

   1.造出hash工厂

    m=hashlib.md5('你'.encode('utf-8'))

 

   2.运送原材料

    m.update('你好啊’.encode('utf-8'))

    3.产出hash值

    print(m.hexdigest)

 

应用一:文件一致性校验

 

    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)

 

应用二:密码加密

    m=hashlib.md5()

    m.update('天王盖地虎'.encode('utf-8'))      #添加个暗号,提升密码复杂度
    m.update(password.encode('utf-8'))
    print(m.hexdigest()) 

 

加密模块另一个加密模块 hmac

import hmac

m=hmac.new('小鸡炖蘑菇'.encode('utf-8')) #用法跟hash一样的用法,但必须要传个值,增加密码难度性
m.update('hello'.encode('utf-8'))
print(m.hexdigest())

 

转载于:https://www.cnblogs.com/Marcki/p/10111951.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: