python 的aes加密
时间: 2023-11-20 09:59:37 浏览: 37
Python中的AES加密可以使用PyCryptodome库来实现。下面是一个简单的示例代码:
```python
from Crypto.Cipher import AES
import base64
# 加密函数
def aes_encrypt(key, data):
# 将key和data转换为bytes类型
key = bytes(key, encoding='utf-8')
data = bytes(data, encoding='utf-8')
# 补全data长度为16的倍数
padding = 16 - len(data) % 16
data += bytes([padding]) * padding
# 创建AES对象并进行加密
cipher = AES.new(key, AES.MODE_ECB)
encrypted_data = cipher.encrypt(data)
# 将加密后的数据进行base64编码并返回
return base64.b64encode(encrypted_data).decode('utf-8')
# 解密函数
def aes_decrypt(key, encrypted_data):
# 将key和encrypted_data转换为bytes类型
key = bytes(key, encoding='utf-8')
encrypted_data = base64.b64decode(encrypted_data)
# 创建AES对象并进行解密
cipher = AES.new(key, AES.MODE_ECB)
decrypted_data = cipher.decrypt(encrypted_data)
# 去除补全的数据并返回解密后的结果
padding = decrypted_data[-1]
return decrypted_data[:-padding].decode('utf-8')
# 测试代码
key = '1234567890123456'
data = 'Hello, world!'
encrypted_data = aes_encrypt(key, data)
print('加密后的数据:', encrypted_data)
decrypted_data = aes_decrypt(key, encrypted_data)
print('解密后的数据:', decrypted_data)
```
在上面的代码中,我们使用了ECB模式进行加密和解密。需要注意的是,ECB模式不是很安全,因为它没有使用IV(初始化向量),容易受到重放攻击。如果需要更高的安全性,可以考虑使用CBC模式或者其他更安全的模式。