我们在储存一些重要的数据的时候,通常会将这些数据进行加密后进行储存。python中的hashlib为我们提供了这样的功能,其中主要包括MD5,SHA1,SHA256,SHA384,SHA512
等常见摘要算法。
什么是摘要算法?摘要算法又称哈希算法,它通过一个函数,把一个任意长度的数据进行加密后生成固定长度的数据串。
MD5是最常见的摘要算法,速度很快,生成固定长度128bit字节
SHA算法的结果是160bit,越安全的算法意味着其速度会相应变慢。
所以常见的算法为MD5和sha1算法。
使用的例子
import hashlib
def encrypt(arg):
s = bytes(arg,encoding = "utf-8")
md5 = hashlib.md5()
md5.update(s)
return md5.hexdigest()
str1 = "hi hashlib"
print(encrypt(str1))
其结果为
7cd5fd2b70cc4f543412a849e167dd55
但是往往只是经过这样的加密,其实并不是很安全,我们可以通过撞库的方式去获取这些重要的信息(我们可以列举出常用地字符串,生成相应的密码,然后作比较),这时我们可以通过在原来字符串的基础上自己提供一个key的字符串,先对这个字符串进行处理,然后再对想加密的数据进行加密。只要我们不将自己设定的字符串暴露,基本上无法破解。
例子
import hashlib
def encrypt(arg):
s = bytes(arg,encoding = "utf-8")
md5 = hashlib.md5(bytes("too young to simple",encoding="utf-8"))
md5.update(s)
return md5.hexdigest()
str1 = "hi hashlib"
print(encrypt(str1))
856800434f7d4f6d5b3dc62920f0105c