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

  • 相关阅读:
    算法-转
    单页 SEO-转
    浅谈MVVM设计模式
    iOS-UIView动画
    iOS 核心动画(下)
    iOS开发-核心动画(Core Animation)
    iOS-CALayer的介绍
    SVN Xcode不能提交.a文件
    iOS 毛玻璃效果
    Quartz2D学习总结
  • 原文地址:https://www.cnblogs.com/sxqfuture/p/9982188.html
Copyright © 2011-2022 走看看