希望大家明白一个道理:慢生活是有底气的自给自足,而不是好吃懒做的得过且过。
![d2f9d4bc6dce128255593c162c480f3a.png](https://i-blog.csdnimg.cn/blog_migrate/ff9bc919300e7bf6ec185e5e92f3152c.png)
1、前言
在讲述如何实现之前,我们需要考虑两个问题。 一、什么是AES加密? 简单介绍下,AES是一种对称加密算法,它本身只有一个密钥,即用来实现加密,也用于解密。涉及到的模式分别是ECB模式、CBC模式、CFB模式、OFB模式、CTR模式其中常用到的就是CBC模式。有兴趣详细了解AES的同学,可以自行百度查阅。 二、为什么要用Python来实现AES加密解密? 举个爬虫采集时涉及到aes加密的例子2、AES加密解密
一、加密
import base64from Crypto.Cipher import AESdef aes_encrypt(key, data): # 偏移量 vi = '0102030405060708' # 字符串补位 pad = lambda s: s + (16 - len(s) % 16) * chr(16 - len(s) % 16) data = pad(data) # 创建一个新的aes密码 cipher = AES.new(key.encode('utf8'), AES.MODE_CBC, vi.encode('utf8')) # 使用密码对数据加密 encrypt_data = cipher.encrypt(data.encode('utf8')) # 对加密后的数据进行base64编码后解码 return base64.b64encode(encrypt_data).decode('utf8')if __name__ == '__main__': res = aes_encrypt('0CoJUm6Qyw8W8jud', 'pythonpythonpythonpythonpython') print(res)
结果如下
参数介绍:
key:密钥
vi:密斯偏移量
CBC:加密模式
data:加密或者解密数据
需要注意的是,对data字符串补位的时候要保证是16的倍数,而16这个数值是由key的长度来决定的,一般常见的key都是16位。
二、解密
import base64from Crypto.Cipher import AESdef aes_decrypt(key, data): # 偏移量 vi = '0102030405060708' # 字符串补位 un_pad = lambda s: s[0: -s[-1]] # 创建一个新的aes密码 cipher = AES.new(key.encode('utf8'), AES.MODE_CBC, vi.encode('utf8')) # 对需要解密的数据,先进行base64解码 decode_data = base64.decodebytes(data.encode('utf8')) # 使用密码对数据解密 decrypt_data = cipher.decrypt(decode_data) # 对加密后的数据去除补位 return un_pad(decrypt_data).decode('utf8')if __name__ == '__main__': res = aes_decrypt('0CoJUm6Qyw8W8jud', 'Gvf2MNbz7LJFppO10oG4z589CqWFtL+8WRhF7ti69yg=') print(res)
结果如下,成功解密
对你有帮助,请扫码关注!感谢!
![816bf665dac01a9799e57ec34226eaf0.png](https://i-blog.csdnimg.cn/blog_migrate/f091444a5d3c43718afab21aa47f94b3.jpeg)
公众号:逆向旅行
微信号:fzcoder888888
定期分享Python进阶技术,爬虫