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

 

posted @ 2017-02-16 19:41  似是故人来~  阅读(254)  评论(0编辑  收藏  举报