• 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())

  • 相关阅读:
    ROS tf 两个常用的函数
    C/C++ assert()函数用法总结
    drand48 等 随机数生成函数
    PF部分代码解读
    Error "Client wants topic A to have B, but our version has C. Dropping connection."
    launch 文件的写法
    Spring七大框架
    web.xml filter配置
    web.xml listener配置
    web.xml加载过程
  • 原文地址:https://www.cnblogs.com/sxqfuture/p/9982188.html
Copyright © 2020-2023  润新知