python实现aes加密算法
时间: 2023-09-30 17:05:42 浏览: 50
Python有一个名为pycryptodome的库,它提供了多种加密算法,包括AES加密算法。以下是使用pycryptodome库实现AES加密的示例代码:
```python
from Crypto.Cipher import AES
import base64
# 加密函数
def aes_encrypt(key, text):
# 将密钥长度调整为16、24或32字节,如果不足则补0,超过则截断
key = key.encode('utf-8')
key = key + (b'\0' * (AES.block_size - len(key) % AES.block_size))
# 使用key初始化AES对象,使用ECB模式进行加密
cipher = AES.new(key, AES.MODE_ECB)
# 将明文按照AES块大小进行补位
text = text.encode('utf-8')
text = text + (b'\0' * (AES.block_size - len(text) % AES.block_size))
# 加密明文并将结果转换为base64编码的字符串
ciphertext = cipher.encrypt(text)
return base64.b64encode(ciphertext).decode('utf-8')
# 解密函数
def aes_decrypt(key, text):
# 将密钥长度调整为16、24或32字节,如果不足则补0,超过则截断
key = key.encode('utf-8')
key = key + (b'\0' * (AES.block_size - len(key) % AES.block_size))
# 使用key初始化AES对象,使用ECB模式进行解密
cipher = AES.new(key, AES.MODE_ECB)
# 将密文进行base64解码,再进行解密
ciphertext = base64.b64decode(text)
plaintext = cipher.decrypt(ciphertext).rstrip(b'\0')
return plaintext.decode('utf-8')
```
使用示例:
```python
key = '1234567890123456' # 密钥必须是16、24或32字节
text = 'Hello, world!'
encrypted_text = aes_encrypt(key, text)
print(encrypted_text) # 输出:fZc3zPUfz2L7dZs7hL4+8w==
decrypted_text = aes_decrypt(key, encrypted_text)
print(decrypted_text) # 输出:Hello, world!
```