zoukankan      html  css  js  c++  java
  • Python3之hashlib

    简介:

      用于加密相关的操作,代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法。
    在python3中已经废弃了md5和sha模块,简单说明下md5和sha的使用。

      什么是摘要算法呢?

      摘要算法又称为哈希算法,散列算法。它通过一个函数,把任意长度的数据转换为一个长度固顶的数据串(通常用16进制的字符串表示)用于加密相关的操作。

    应用:

    1. md5加密

    1 hash = hashlib.md5()
    2 hash.update('admin'.encode('utf-8'))
    3 print(hash.hexdigest())
    4 21232f297a57a5a743894a0e4a801fc3

    2. sha1加密

    1 hash = hashlib.sha1()
    2 hash.update('admin'.encode('utf-8'))
    3 print(hash.hexdigest())
    4 d033e22ae348aeb5660fc2140aec35850c4da997

    3. sha256加密

    1 hash = hashlib.sha256()
    2 hash.update('admin'.encode('utf-8'))
    3 print(hash.hexdigest())
    4 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918

    4. sha384加密

    1 hash = hashlib.sha384()
    2 hash.update('admin'.encode('utf-8'))
    3 print(hash.hexdigest())
    4 9ca694a90285c034432c9550421b7b9dbd5c0f4b6673f05f6dbce58052ba20e4248041956ee8c9a2ec9f10290cdc0782

    5. sha512加密

    复制代码
    1 hash = hashlib.sha512()
    2 hash.update('admin'.encode('utf-8'))
    3 print(hash.hexdigest())
    4 c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec
    复制代码

    6. ‘加盐’加密

      以上加密算法虽然很厉害,但仍然存在缺陷,通过撞库可以反解。所以必要对加密算法中添加自定义key再来做加密。

    1 ######  md5 加密 ############
    2 hash = hashlib.md5('python'.encode('utf-8'))
    3 hash.update('admin'.encode('utf-8'))
    4 print(hash.hexdigest())
    5 75b431c498b55557591f834af7856b9f

    7. hmac加密

      hmac内部对我们创建的key和内容进行处理后在加密

    1 import hmac
    2 h = hmac.new('python'.encode('utf-8'))
    3 h.update('helloworld'.encode('utf-8'))
    4 print(h.hexdigest())
    5 b3b867248bb4cace835b59562c39fd55

    8. 获取文件的MD5

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    import hashlib
    def md5sum(filename):
            """
            用于获取文件的md5值
            :param filename: 文件名
            :return: MD5码
            """
            if not os.path.isfile(filename):  # 如果校验md5的文件不是文件,返回空
                return
            myhash = hashlib.md5()
            = open(filename, 'rb')
            while True:
                = f.read(8096)
                if not b:
                    break
                myhash.update(b)   
            f.close()
            return myhash.hexdigest()

      

    本博客所有python版本默认为3.5.1
  • 相关阅读:
    Pair Project: Elevator Scheduler
    Project: Individual Project
    【homework week5】初步了解敏捷开发——自由与约束的哲学统一
    【homework #1】第一次作业被虐感受
    To be transfered
    谈敏捷,谈开发 --《Agile Software Development》读后感
    结对编程---附加题作业(作业请参考相应博客)
    结对编程-电梯调度算法的实现 (附加题部分请参考对应博客)
    必应缤纷桌面的必应助手-软件分析和用户市场需求之-----二.体验部分 Ryan Mao (毛宇11061171) (完整版本请参考团队博客)
    对学长所谓“改变世界的游戏”《shield star》的运行感想-毛宇部分(完整版本请参考团队博客)
  • 原文地址:https://www.cnblogs.com/wangmo/p/7758046.html
Copyright © 2011-2022 走看看