zoukankan      html  css  js  c++  java
  • python之hashlib模块

    算法(Algorithm)是在有限步骤内求解某一问题所使用的一组定义明确的规则。可以说,算法就是计算机解题的过程。

    算法具有五个重要特征:

      1.有穷性:步骤有限

      2.明确性:算法每一步必须有明确的意义

      3.输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是算法本身定的初始条件

      4.输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。

      5.可行性:算法原则上是可以精确运行的

    hash是一种算法,算法就像是一座工厂,接受传入的内容(输入),经过加工处理(运算)得到加工处理后的产品(一串hasn值)。

    hash算法的特点:

      1.只要传入的内容一样,经过运算后的得到 的hash值必然是 一样的;=====》完整性验证

      2.hash值是不能反解的;=======》把密码做成hash值,不以明文的形式传输/存储

      3.只要hash算法不变,无论明文的内容有多大多小,hash值的长度是一样的。===》不影响网络传输

    import hashlib
    #常规用法一
    # m=hashlib.md5('helloworld'.encode('utf-8'))
    # print(m.hexdigest())
    #fc5e038d38a57032085441e7fe7010b0
    
    #常规用法二
    # m=hashlib.md5()
    # m.update('hello'.encode('utf-8'))
    # m.update('world'.encode('utf-8'))
    # print(m.hexdigest())
    #fc5e038d38a57032085441e7fe7010b0
    
    # m=hashlib.md5()
    # m.update('helloworld'.encode('utf-8'))
    # print(m.hexdigest())
    #fc5e038d38a57032085441e7fe7010b0
    
    # m=hashlib.md5()
    # m.update('hello world'.encode('utf-8'))
    # print(m.hexdigest())
    #5eb63bbbe01eeed093cb22bb8f5acdc3
    
    '''
    从以上的练习中可以看出,同样的内容得到的hash值是一样的,
    稍微有点改动,甚至加一个空格都会得到不同的hash结果
    '''
    

     

    加盐

    import hashlib
    m=hashlib.md5()
    m.update('天王盖地虎'.encode('utf-8'))
    m.update('密码。。。'.encode('utf-8'))
    m.update('小鸡炖蘑菇'.encode('utf-8'))
    print(m.hexdigest())
    #6e7122afda007b679dfb7759f9122783
    

      

    hmac模块

    import hmac
    h=hmac.new('天王盖地虎'.encode('utf-8'))
    h.update('密码。。。'.encode('utf-8'))
    print(h.hexdigest())
    #e76a9abfcec64c6594384c14dbbd8f82
    

      

  • 相关阅读:
    table表框去掉相邻的间隔
    各种日期格式化返回
    校验金额、大小写字母、大写字母、合法uri、email
    vue js校验金钱、数字
    vue-router 动态添加 路由
    可视化-echarts流向图制作
    HTTP状态码
    二分查找
    编程语言的变量为啥不能是数字开头
    python位运算
  • 原文地址:https://www.cnblogs.com/qiaoqianshitou/p/8783402.html
Copyright © 2011-2022 走看看