python实现aes加解密算法
时间: 2023-08-24 10:04:59 浏览: 148
python实现AES加密解密
Python中可以使用pycryptodome库来实现AES加解密算法。以下是示例代码:
```python
from Crypto.Cipher import AES
import base64
# 定义加密函数
def encrypt_AES(key, text):
aes = AES.new(key, AES.MODE_ECB) # 创建加密器
length = 16 # 密钥长度必须是16、24或32字节长度
count = len(text.encode('utf-8')) # 计算明文长度
padding_size = length - (count % length) # 计算需要填充的字节数
padding_text = chr(padding_size) * padding_size # 构造填充字符串
cipher_text = text.encode('utf-8') + padding_text.encode('utf-8') # 填充明文
encrypted_text = aes.encrypt(cipher_text) # 加密
return base64.b64encode(encrypted_text).decode('utf-8') # 返回Base64编码后的密文
# 定义解密函数
def decrypt_AES(key, text):
aes = AES.new(key, AES.MODE_ECB) # 创建解密器
decrypted_text = aes.decrypt(base64.b64decode(text)).decode('utf-8') # 解密
padding_size = ord(decrypted_text[-1]) # 获取填充字节数
if padding_size > 0 and padding_size <= 16:
decrypted_text = decrypted_text[:-padding_size] # 去除填充
return decrypted_text
# 测试
key = b'1234567890123456' # 密钥必须是16、24或32字节长度
text = 'hello world'
encrypted_text = encrypt_AES(key, text)
print('加密后的密文:', encrypted_text)
decrypted_text = decrypt_AES(key, encrypted_text)
print('解密后的明文:', decrypted_text)
```
注意,这里的密钥和明文都必须是bytes类型,而加密后的密文是Base64编码后的字符串类型,解密时需要先进行Base64解码。另外,ECB模式并不是最安全的加密模式,建议使用更安全的CBC或CTR模式。
阅读全文