我们来学习一下 Python 中的加密模块,加密模块在工作中被广泛应用。比如数据的传入 不希望被捕获,通过把数据加密。这样即使被捕获也无法获取到数据的真实信息,今天我们就来学习一下关于加密的方法。
hashlib 模块
hashlib 模块的介绍
hashlib 模块中拥有很多的加密算法,我们并不需要关心加密算法的实现方法。只需要调用我们需要的加密函数,就可以帮助我们对数据进行加密。
它的加密算法有很多,不仅如此,hashlib 中很多加密算法加密难度很大,所以加密后的数据很难被破解(这里的很难被破解是相对而言的,比如MD5、sha1、mysql、ntlm就可以在 cmd5 通过穷举的方式进行明密文的对应查询。),这就是 hashlib 强大的地方。既然无法破解也就无法解密,所以hashlib 中的加密方法都是不可逆的。
hashlib 模块中的常用加密方法
接下来就让我们看一下 hashlib
中常用的加密算法:
- 以上的加密函数都有一个 byte 类型的参数,通过调用对应的函数会返回一个 hash对象。所谓
hashlib
就是一种加密方式。 - sha1、sha256、sha512 的区别就是 数值越高,被破解的概率就越低。
hashlib 模块生成加密字符串示例:
import hashlib
hashobj = hashlib.md5(b'Hello_World') # 将 'Hello_World'以 byte 形式传入,通过 md5 加密 赋值给 hashobj 对象
result = hashobj.hexdigest() # hashobj 通过 hexdigest() 函数的16进制生成加密字符串赋值给 result
print(result)
# >>> 执行结果如下:
# >>> 486b98e454e54f44e811b9c62857f8f7
hashlib模块情景练习
大家可能有一个疑问, hashlib 模块加密后的无法解密获取原始数据,那我们加密后的信息有什么用呢?实际上场景有很多,我们今天就来举例一个场景。
比如我们的用户需要某一个服务的帮助,用户每次请求服务都需要一个凭证。这个凭证信息是通过加密的方式生成的字符串,并且该加密方式是双方达成一致,标准相同的。当用户请求该服务的时候,带上这个加密的字符串,服务会通过响应的加密规范也生成一个字符串。如果用户带过来的凭证的字符串与服务计算出来的凭证的字符串完全一致,则证明用户请求的这个服务是一个合法的请求,反之则不