python aes加密解密
时间: 2023-09-07 09:17:29 浏览: 60
在Python中实现AES加密解密可以使用pycryptodome库。下面是一个简单的示例:
```python
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64
# 加密函数
def aes_encrypt(key, iv, data):
cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv.encode('utf-8'))
ciphertext = cipher.encrypt(pad(data.encode('utf-8'), AES.block_size))
return base64.b64encode(ciphertext).decode('utf-8')
# 解密函数
def aes_decrypt(key, iv, data):
cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv.encode('utf-8'))
plaintext = unpad(cipher.decrypt(base64.b64decode(data)), AES.block_size)
return plaintext.decode('utf-8')
# 测试
key = '0123456789abcdef'
iv = '1234567890abcdef'
data = 'Hello, world!'
encrypted_data = aes_encrypt(key, iv, data)
print('Encrypted data:', encrypted_data)
decrypted_data = aes_decrypt(key, iv, encrypted_data)
print('Decrypted data:', decrypted_data)
```
需要注意的是,AES加密需要提供一个密钥和一个初始化向量(IV),其中密钥和IV的长度必须是16、24或32字节。在加密时需要对明文进行填充,解密后需要对密文进行去填充。在示例中使用了base64进行编码和解码,这是为了方便数据的传输和显示,但实际上并不是必须的。
阅读全文