zoukankan      html  css  js  c++  java
  • Python MD5算法使用

    ## md5算法简介
    1.  **简介**
       MD5消息摘要算法(MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。
    2.  **用途**
       * **一致性验证**   对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。
        MD5可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的“数字指纹”,如果任何人对文件做了任何改动,其MD5值也就是对应的“数字指纹”都会发生变化。
       * **数字签名**   对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。(数字证书)
       * **安全访问认证**   密码加密存储

    ## Python中使用md5加密字符串
       MD5是hash算法的一种。
    # 导入hash算法库
    import hashlib
    # 得到md5算法对象
    hash_md5 = hashlib.md5()
    # 准备要计算md5的数据(bytes类型)
    data = '二进制数据'.encode('utf-8', errors='ignore')
    # 计算
    hash_md5.update(data)
    # 获取计算结果(16进制字符串,32位字符)
    md5_str = hash_md5.hexdigest()
    # 打印结果
    print(md5_str)
    ```
    注意: md5算法在使用时,数据可以分多次传递给update方法。所以,如下代码的结果,和上面相同:
    ```python
    # 导入hash算法库
    import hashlib
    # 得到md5算法对象
    hash_md5 = hashlib.md5()
    # 准备要计算md5的数据(bytes类型),第一部分
    data1 = '二进制'.encode('utf-8', errors='ignore')
    # 计算第一部分数据
    hash_md5.update(data1)
    # 准备要计算md5的数据(bytes类型),第二部分
    data2 = '数据'.encode('utf-8', errors='ignore')
    # 计算第一部分数据
    hash_md5.update(data2)
    # 获取计算结果(16进制字符串,32位字符)
    md5_str = hash_md5.hexdigest()
    # 打印结果
    print(md5_str)
    ```
    
    ## Python中使用md5算法获取文件MD5摘要
    ```python
    # 导入hash算法库
    import hashlib
    
    def file_md5sum(file_path):
        '''计算文件md5值'''
        # 得到md5算法对象
        hash_md5 = hashlib.md5()
        # 文件分块读取
        chunk_size = 4096 # 4096 字节(4KB)
        # 以二进制方式读文件
        with open(file_path, "rb") as f:
            # 获取分块数据(bytes),一次读取 chunk_size 个字节
            chunk = f.read(chunk_size)
            # 如果能读取到内容,就一直读取
            while bool(chunk):
                # 应用MD5算法,计算
                hash_md5.update(chunk)
                # 继续读
                chunk = f.read(chunk_size)
        # 返回计算结果(16进制字符串,32位字符)
        return hash_md5.hexdigest()
    
    file_path = r'你的文件路径' # 改成自己的文件路径
    file_md5_str = file_md5sum(file_path) # 计算给定路径的文件的md5
    # 打印文件md5值
    print(file_md5_str)
    # 打印文件md5值(大写)
    print(file_md5_str.upper())

  • 相关阅读:
    Binary Tree Maximum Path Sum
    ZigZag Conversion
    Longest Common Prefix
    Reverse Linked List II
    Populating Next Right Pointers in Each Node
    Populating Next Right Pointers in Each Node II
    Rotate List
    Path Sum II
    [Leetcode]-- Gray Code
    Subsets II
  • 原文地址:https://www.cnblogs.com/sxqfuture/p/9982188.html
Copyright © 2011-2022 走看看