您的位置:首页 > 其它

hashlib模块

2017-02-16 19:41 148 查看

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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: