• 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
    

      

  • 相关阅读:
    iOS
    iOS
    iOS
    iOS
    iOS(WKWebView)OC与JS交互 之三
    iOS(UIWebView 和WKWebView)OC与JS交互 之二
    CentOS VMware 下SSH配置方法详解
    15个nosql数据库
    MySql 优化
    Elasticsearch 相关名词理解
  • 原文地址:https://www.cnblogs.com/qiaoqianshitou/p/8783402.html
Copyright © 2020-2023  润新知