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