AES cipher.encrypt 入参格式
时间: 2023-10-24 22:07:02 浏览: 183
`cipher.encrypt` 方法的入参格式一般为 bytes 类型的明文,长度可以是 16 的倍数。在使用该方法前,需要先对明文进行填充,使其长度为 16 的倍数。填充方式可以选择 PKCS7 填充或者 ZeroPadding 填充。填充后的明文可以通过 `bytes()` 函数转换成 bytes 类型。
以下是一个示例代码:
```python
from Crypto.Cipher import AES
import base64
key = b'1234567890123456' # 密钥,长度必须为 16、24 或 32 字节
iv = b'1234567890123456' # 初始化向量,长度必须为 16 字节
plaintext = 'Hello, world!'
# 使用 PKCS7 填充
pad_len = AES.block_size - len(plaintext) % AES.block_size
padding = bytes([pad_len] * pad_len)
plaintext = plaintext.encode() + padding
# 创建 cipher 对象
cipher = AES.new(key, AES.MODE_CBC, iv)
# 加密明文
ciphertext = cipher.encrypt(plaintext)
# 将密文进行 base64 编码
base64_ciphertext = base64.b64encode(ciphertext)
print(base64_ciphertext)
```
在上面的示例中,我们使用了 PKCS7 填充方式,将明文填充到 16 字节的倍数。然后创建了一个 AES 对象,使用 CBC 模式和指定的密钥和初始化向量进行加密。最后将加密后的密文进行了 base64 编码。
阅读全文