python aes加密字符串 长度不是16倍数
时间: 2023-12-22 07:05:46 浏览: 292
在使用AES加密字符串时,如果字符串的长度不是16的倍数,需要进行填充,否则会出现“ValueError: Data must be padded to 16 byte boundary in CBC mode”这个错误。
可以使用Python的`padding`模块进行PKCS7填充,示例代码如下:
```python
from Crypto.Util.Padding import pad
from Crypto.Cipher import AES
block_size = 16
key = b'your_key_16bytes'
plaintext = b'This is some plaintext.'
# 对明文进行填充
padded_plaintext = pad(plaintext, block_size)
# 创建AES加密器
cipher = AES.new(key, AES.MODE_CBC)
# 加密
ciphertext = cipher.encrypt(padded_plaintext)
```
在加密前,你需要确保已经按照上述方法对数据进行了填充。
如果解密后的数据需要进行处理,你还需要使用相同的填充方法对处理后的数据进行去除填充。
```python
from Crypto.Util.Padding import unpad
# 创建AES解密器
cipher = AES.new(key, AES.MODE_CBC, iv)
# 解密
decrypted_data = cipher.decrypt(ciphertext)
# 去除填充
unpadded_data = unpad(decrypted_data, block_size)
```
这样,你就可以避免该错误的出现。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)