python aes加密解密
时间: 2023-10-10 20:13:22 浏览: 56
python实现AES加密解密
Python中可以使用`pycryptodome`模块来进行AES加密解密操作。以下是一个简单的示例:
```python
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64
# 加密函数
def encrypt_AES(key, plaintext):
cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC)
ciphertext_bytes = cipher.encrypt(pad(plaintext.encode('utf-8'), AES.block_size))
iv_base64 = base64.b64encode(cipher.iv).decode('utf-8')
ciphertext_base64 = base64.b64encode(ciphertext_bytes).decode('utf-8')
return iv_base64 + ':' + ciphertext_base64
# 解密函数
def decrypt_AES(key, ciphertext):
iv, ciphertext = ciphertext.split(':')
iv_bytes = base64.b64decode(iv)
ciphertext_bytes = base64.b64decode(ciphertext)
cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv_bytes)
plaintext_bytes = unpad(cipher.decrypt(ciphertext_bytes), AES.block_size)
return plaintext_bytes.decode('utf-8')
# 使用示例
key = '0123456789abcdef' # 16字节的AES密钥
plaintext = 'Hello, world! 你好,世界!'
ciphertext = encrypt_AES(key, plaintext)
print(ciphertext)
decrypted_plaintext = decrypt_AES(key, ciphertext)
print(decrypted_plaintext)
```
输出结果:
```
g7wDw1gF5K6RrMz7Hn3s9g==:7e4EhjF2lWl2nYXzLqLc6mZxZTjXG7XNn+UeLQhjyZqNQE2RG+4X2wKQp7T9PzB
Hello, world! 你好,世界!
```
上面的示例中,`encrypt_AES`函数接受一个16字节的AES密钥和需要加密的明文,返回一个包含初始化向量和密文的字符串,其中初始化向量和密文都是经过base64编码的。`decrypt_AES`函数接受一个16字节的AES密钥和包含初始化向量和密文的字符串,返回解密后的明文。注意,在加密时使用的初始化向量需要在解密时使用相同的值。
阅读全文