python实现AES算法的CBC模式加密
时间: 2023-09-29 16:07:34 浏览: 156
以下是Python实现AES算法的CBC模式加密的示例代码:
```python
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
key = '1234567890123456' # 密钥,长度必须为16、24或32字节
iv = '1234567890123456' # 初始向量,长度必须为16字节
plaintext = 'Hello world!' # 明文
cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv.encode('utf-8'))
padded_plaintext = pad(plaintext.encode('utf-8'), AES.block_size)
ciphertext = cipher.encrypt(padded_plaintext)
print(ciphertext.hex())
```
解释:
1. 导入所需模块:`Crypto.Cipher`用于加密、解密,`Crypto.Util.Padding`用于填充。
2. 定义密钥、初始向量和明文。
3. 创建`AES`对象,指定加密模式为`AES.MODE_CBC`,并传入密钥和初始向量。
4. 对明文进行填充,使其长度为`AES.block_size`的倍数。这里使用`Crypto.Util.Padding`模块的`pad`函数进行填充。
5. 调用`encrypt`方法对填充后的明文进行加密,得到密文。
6. 打印密文的十六进制表示。
阅读全文