zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    luogu4365 秘密袭击 (生成函数+线段树合并+拉格朗日插值)
    [模板]左偏树
    luogu4166 最大土地面积 (旋转卡壳)
    bzoj3168 钙铁锌硒维生素 (矩阵求逆+二分图最小字典序匹配)
    [模板]矩阵树定理
    [模板]快速傅里叶变换(FFT)
    [模板]Min_25筛
    [模板]杜教筛
    [模板]莫比乌斯反演
    DrawerLayout—侧拉栏的使用
  • 原文地址:https://www.cnblogs.com/freely/p/6407316.html
Copyright © 2011-2022 走看看