zoukankan      html  css  js  c++  java
  • hashlib模式和hmac模式

    hashlib模式

    什么叫hash?

    一:hash是一种算法(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法),该算法接受传入的内容,经过运算得到一串hash值

    特点:

    1、只要传入的内容一样,得到的hash值必然一样==========》可以保证下载内容完整性,文件完整性校验

    2、但是你拿到的值不能返回原来的内容=======》把密码做成hash值,不要用明文传输

    3、只要使用的hash算法不变,无论校验的内容一样,得到的hash值长度是固定

    import hashlib()
    
    m=hashlib.md5()
    
    m.updata('hello'.encode('utf-8'))
    
    m.updata('world'.encode('utf-8'))
    
    m.updata('egon'.encode('utf-8'))

    print(m.hexdigest())
    import hashlib
    
    m=hashlib.md5()
    m.updata('hello'.encode('utf-8'))
    m.updata('world'.encode('utf-8'))
    m.updata('egon'.encode('utf-8'))
    print('m.hexdigest()')

    上下都一样打印出来都一样符合特点一

    二;密码加盐(本质上就是把一些东西掺合在密码当中让密码难以被他人截取识别啊)

    import hashlib
    pwd=‘alex3712’
    m.hashlib.md5()
    m.updata('Ryansuperwa'.encode('utf-8'))
    m.updata(pwd.encode('utf-8'))
    m.updata('aijie'.encode('utf-8'))
    print(m.hexdigest())

    hmac模式:

    python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 进行进一步的处理然后再加密:

    import hmac
    
    h1=hmac.new(b'egon')
    h1.update(b'hello')
    h1.update(b'world')
    print(h1.hexdigest())
    
    h2=hmac.new(b'egon')
    h2.update(b'helloworld')
    print(h2.hexdigest())

    f1bf38d054691688f89dcd34ac3c27f2
    f1bf38d054691688f89dcd34ac3c27f2
     
    #要想保证hmac最终结果一致,必须保证:
    #1:hmac.new括号内指定的初始key一样
    #2:无论update多少次,校验的内容累加到一起是一样的内容
    
  • 相关阅读:
    vagrant up报错 Warning: Authentication failure. Retrying...解决方案
    node读写Excel操作
    批量转换word为pdf
    分享7个shell脚本实例--shell脚本练习必备
    shell脚本实例,通向shell脚本大师的必经之路
    前端优化DNS预解析
    如何选择开源协议
    深入理解document.referrer的用法
    使用 WebRTC 构建简单的前端视频通讯
    深入理解WebRTC
  • 原文地址:https://www.cnblogs.com/wuchenyu/p/8779106.html
Copyright © 2011-2022 走看看