实现AES-256-CBC的Python代码。
时间: 2024-04-19 12:23:56 浏览: 195
当然,这是一个使用Python实现AES-256-CBC加密和解密的示例代码:
```python
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
from Crypto.Random import get_random_bytes
import base64
def encrypt(plain_text, key):
# 生成随机的初始向量(IV)
iv = get_random_bytes(AES.block_size)
cipher = AES.new(key, AES.MODE_CBC, iv)
# 对明文进行填充
padded_text = pad(plain_text.encode(), AES.block_size)
# 加密
encrypted_text = cipher.encrypt(padded_text)
# 将IV和加密后的密文进行Base64编码,并返回
return base64.b64encode(iv + encrypted_text).decode()
def decrypt(encrypted_text, key):
# 对Base64编码后的密文进行解码
encrypted_text = base64.b64decode(encrypted_text)
# 提取IV和密文
iv = encrypted_text[:AES.block_size]
encrypted_text = encrypted_text[AES.block_size:]
cipher = AES.new(key, AES.MODE_CBC, iv)
# 解密并移除填充
decrypted_text = unpad(cipher.decrypt(encrypted_text), AES.block_size)
return decrypted_text.decode()
# 测试代码
key = b'ThisIsASecretKey12345' # 256位的密钥
plain_text = 'Hello, world!' # 待加密的明文
encrypted_text = encrypt(plain_text, key)
print('加密后的密文:', encrypted_text)
decrypted_text = decrypt(encrypted_text, key)
print('解密后的明文:', decrypted_text)
```
请注意,这段代码使用了`pycryptodome`库(在Python 3中安装为`pip install pycryptodome`)。它提供了对AES加密算法的支持。
阅读全文