为什么要加密?
数据的传输过程中,通过对数据进行加密,即便数据被捕获,也无法获取数据信息
hashlib模块有很多加密算法,我们不需要关心这些加密算法具体怎么实现的,会使用hashlib模块的函数就可以了
hashlib加密的特点是难破解,不可逆
| 函数 | 参数 | 描述 | 例子 | 返回值 |
|---|---|---|---|---|
| md5 | byte | Md5算法加密 | hashlib.md5(b’hello’) | Hash对象 |
| sha1 | byte | sha1算法加密 | hashlib.sha1(b’hello’) | Hash对象 |
| sha256 | byte | sha256算法加密 | hashlib.sha256(b’hello’) | Hash对象 |
| sha512 | byte | sha512算法加密 | hashlib.sha512(b’hello’) | Hash对象 |
sha1、sha256、sha512的区别是,数值越高,被破解的概率就越低
用法:
hashobj = hashlib.md5(b'hello')
result = hashobj.hexdigest() # 将哈希对象以16进制生成加密字符串
思考:通过hashlib加密的数据无法解密,实际怎么应用呢?
答:在实际中,可以用hashlib对验证签名进行加密,在验证签名是否合法时,验证加密后的内容是否一致就可以了。
例子:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WsU1kr0d-1660810798845)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220818150738078.png)]](https://1000bd.com/contentImg/2024/03/29/883bd5340e7ab9e9.png)
base64加密的模块的特点是通用,可解密
通用,即每个编程语言中都有base64加密解密功能
| 函数 | 参数 | 描述 | 例子 | 返回值 |
|---|---|---|---|---|
| encodestring | Byte | 进行base64加密 | base64.encodestring(b’python’) | Byte |
| decodestring | Byte | 对base64解密 | base64.decodestring(b’python’) | byte |
| encodebytes | byte | 进行base64加密 | base64.encodebytes(b’python’) | byte |
| decodebytes | byte | 对base64解密 | base64.decodebytes(b’python’) | byte |
前两组函数和后两组函数的功能相同,在python3中,更加推荐用后面两组函数进行base64的加密解密
思考:所有人都知道base64的加密和解密方法,那么用base64加密的有什么意义呢?
答:在实际应用中,可以对base64加密后的数据用自己的规则进行二次输出
例子:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ziTg6QJi-1660810798847)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220818161929971.png)]](https://1000bd.com/contentImg/2024/03/29/0f70c80474191b37.png)