python使用aes加密字节数组
时间: 2024-01-10 21:19:31 浏览: 33
以下是使用Python进行AES加密字节数组的示例代码:
```python
from Crypto.Cipher import AES
import base64
# 将原始的明文用空格填充到16字节
def pad(data):
pad_data = data
for i in range(0,16-len(data)):
pad_data = pad_data + ' '
return pad_data
# 将明文用AES加密
def AES_en(key, data):
# 将长度不足16字节的字符串补齐
if len(data) < 16:
data = pad(data)
# 创建加密对象
AES_obj = AES.new(key.encode("utf-8"), AES.MODE_CBC, iv.encode("utf-8"))
# 完成加密
AES_en_str = AES_obj.encrypt(data.encode("utf-8"))
# 用base64编码一下
AES_en_str = base64.b64encode(AES_en_str)
# 最后将密文转化成字符串
AES_en_str = AES_en_str.decode("utf-8")
return AES_en_str
# 将密文用AES解密
def AES_de(key, data):
# 先将密文转化成字节流
data = base64.b64decode(data)
# 创建解密对象
AES_obj = AES.new(key.encode("utf-8"), AES.MODE_CBC, iv.encode("utf-8"))
# 完成解密
AES_de_str = AES_obj.decrypt(data)
# 去掉填充的空格
AES_de_str = AES_de_str.decode("utf-8").rstrip()
return AES_de_str
# 测试代码
key = '1234567890123456'
iv = '1234567890123456'
data = b'hello world'
encrypted_data = AES_en(key, data)
print('加密后的数据:', encrypted_data)
decrypted_data = AES_de(key, encrypted_data)
print('解密后的数据:', decrypted_data)
```