python实现AES加密解密
时间: 2024-10-16 10:01:00 浏览: 22
在Python中,我们可以使用`cryptography`库来实现AES(高级加密标准)的加密和解密。以下是基本的过程:
### 加密
1. 导入所需模块:
```python
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.padding import PKCS7
import base64
```
2. 创建密钥和初始向量(IV):
```python
key = bytes.fromhex('your_secret_key_32_chars') # 使用128位密钥
iv = bytes.fromhex('your_initialization_vector_16_chars')
```
3. 初始化加密上下文:
```python
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
encryptor = cipher.encryptor()
padding = PKCS7(algorithms.AES.block_size).padder()
```
4. 加密数据:
```python
plain_text = "Your message".encode()
padded_data = padding.update(plain_text) + padding.finalize()
ciphertext = encryptor.update(padded_data) + encryptor.finalize()
```
5. Base64编码以方便传输:
```python
encoded_ciphertext = base64.b64encode(ciphertext).decode()
```
### 解密
1. 获得解密所需的密钥和IV:
```python
decoded_ciphertext = base64.b64decode(encoded_ciphertext)
key, iv = key, iv
```
2. 初始化解密上下文:
```python
decryptor = cipher.decryptor()
unpadder = PKCS7(algorithms.AES.block_size).unpadder()
```
3. 解密数据:
```python
decrypted_data = decryptor.update(decoded_ciphertext) + decryptor.finalize()
unpadded_data = unpadder.update(decrypted_data) + unpadder.finalize()
```
4. 将解密后的文本转换回字符串:
```python
plain_text = unpadded_data.decode()
```
注意:实际应用中,你需要妥善保存和传递密钥和IV,以及在解密时确保安全地获取它们。
阅读全文