zoukankan      html  css  js  c++  java
  • Python中hashlib模块

    介绍hashlib

      hashlib 是一个提供了一些流行的hash算法的 Python 标准库.其中所包括的算法有 md5, sha1, sha224, sha256, sha384, sha512. 另外,模块中所定义的 new(name, string=”) 方法可通过指定系统所支持的hash算法来构造相应的hash对象.

    import hashlib
    
    m = hashlib.md5()
    print(m)
    
    m.update('hello world'.encode('utf-8'))
    print(m.hexdigest())
    
    m.update('pis'.encode('utf-8'))
    print(m.hexdigest())
    
    m2 = hashlib.md5()
    m2.update('hello worldpis'.encode('utf-8'))
    print(m.hexdigest())
    
    s=hashlib.sha256()
    s.update('hello world'.encode('utf-8'))
    print(s.hexdigest())

    <md5 HASH object @ 0x011F56E0>
    5eb63bbbe01eeed093cb22bb8f5acdc3
    195dce4dff55989fe6508ef45b525d8b
    195dce4dff55989fe6508ef45b525d8b
    b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

    a. 各hash算法的使用示例

    from hashlib import md5, sha1, sha224, sha256, sha384, sha512
    from pprint import pprint
    
    hash_funcs = [md5, sha1, sha224, sha256, sha384, sha512]
    
    
    def hash_show(s):
        result = []
        for func in hash_funcs:
            s_hash_obj = func(s)
            s_hash_hex = s_hash_obj.hexdigest()
            result.append((s_hash_obj.name, s_hash_hex,  len(s_hash_hex)))
        return result
    
    
    if __name__ == '__main__':
        s = 'hello python'.encode('utf-8')
        rs = hash_show(s)
        pprint(rs)

    b. 一个 md5 的使用示例

    from hashlib import md5
    
    m1 = hashlib.md5()    # 构造hash对象
    m1.update('hello')
    m1.update(' ')
    m1.update('python')
    
    m2 = hashlib.md5('hello python')
    
    print m1.hexdigest() == m2.hexdigest()    # 两种方式的效果相同

    c. 使用 new(name, string=”) 构造新的哈系对象

    import hashlib
    
    h = hashlib.new('ripemd160', 'hello python')    # ripemd160是一个160位的hash算法. ripemd系列算法基于md4, md5.
    print h.hexdigest()
  • 相关阅读:
    文件IO学习
    简单哈希表学习
    关于二叉树的遍历
    关于多点共线问题
    关于线程
    时间复杂度O()与KMP算法
    单链表相关
    拷贝构造函数与深浅拷贝
    在windows把python写成bat文件的坑
    python学习手册:第二十五章——oop
  • 原文地址:https://www.cnblogs.com/MY0213/p/7776956.html
Copyright © 2011-2022 走看看