• 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()
  • 相关阅读:
    re.match() and re.search()
    libxml2 使用教程【转】
    Spring PropertyPlaceholderConfigurer类载入外部配置
    Spring PropertyPlaceholderConfigurer类载入外部配置
    Spring PropertyPlaceholderConfigurer类载入外部配置
    Spring PropertyPlaceholderConfigurer类载入外部配置
    前缀和、前缀积
    前缀和、前缀积
    前缀和、前缀积
    前缀和、前缀积
  • 原文地址:https://www.cnblogs.com/MY0213/p/7776956.html
Copyright © 2020-2023  润新知