• hashlib模块


    hashlib模块

      hashlib是个专门提供hash算法的库,其支持openssl 库提供的所有算法,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法,使用非常简单、方便。md5经常用来做用户密码的存储。而sha1则经常用作数字签名。

    MD5:

      MD5的全称是Message-Digest Algorithm 5(信息-摘要算法)。128位长度。目前MD5是一种不可逆算法。具有很高的安全性。它对应任何字符串都可以加密成一段唯一的固定长度的代码。
    另外MD5除了用作用户密码的存储外,还可以利用这种唯一性,可以计算两个文件MD5码,判断两个文件是否相同,有没有被篡改

    import hashlib
    
    m = hashlib.md5()#创建一个MD5加密对象,md5不能反解,但是加密是固定的,就是关系是一一对应,所以有缺陷,可以被对撞出来
    m.update(b"Hello") #更新要加密的数据
     m.update(b"It's me") 
    print(m.digest())
     m.update(b"It's been a long time since last time we ...")
    
    #如果m.update(a)之后在 m.update(b),那么就相当于m.update(a+b)
    
    
    print(m.digest())  # 加密后的结果(2进制格式hash)
    print(len(m.hexdigest()))  # 加密后的结果(16进制格式hash)
    '''
    def digest(self, *args, **kwargs): # real signature unknown
        """ Return the digest value as a string of binary data. """
        pass
    
    def hexdigest(self, *args, **kwargs): # real signature unknown
        """ Return the digest value as a string of hexadecimal digits. """
        pass
    
    '''
    其他算法的常规加密:
    import hashlib
     
    # ######## md5 ########
     
    hash = hashlib.md5()
    hash.update('admin')
    print(hash.hexdigest())
     
    # ######## sha1 ########
     
    hash = hashlib.sha1()
    hash.update('admin')
    print(hash.hexdigest())
     
    # ######## sha256 ########
     
    hash = hashlib.sha256()
    hash.update('admin')
    print(hash.hexdigest())
     
     
    # ######## sha384 ########
     
    hash = hashlib.sha384()
    hash.update('admin')
    print(hash.hexdigest())
     
    # ######## sha512 ########
     
    hash = hashlib.sha512()
    hash.update('admin')
    print(hash.hexdigest())
    #以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。
     
    添加自定义key做加密
    import hashlib
     
    # ######## md5 ########
    hash = hashlib.md5('898oaFs09f')
    hash.update('admin')
    print hash.hexdigest()
    更牛逼的加密-python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密
    import hmac
    h = hmac.new('admin')
    h.update('hellowo')
    print h.hexdigest()
  • 相关阅读:
    C#操作指针
    C#使用指针表达式
    C#指针转换
    C#基础指针类型
    线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(二)
    线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)
    201521123079 《Java程序设计》第1周学习总结
    201521123069 《Java程序设计》 第2周学习总结
    201521123069 《Java程序设计》第1周学习总结
    201521123004 《Java程序设计》第2周学习总结
  • 原文地址:https://www.cnblogs.com/freely/p/6407316.html
Copyright © 2020-2023  润新知