AES文本加密和解密python
时间: 2025-01-07 19:09:08 浏览: 5
AES(Advanced Encryption Standard)是一种对称加密算法,用于保护数据的安全传输。在Python中,我们可以使用`cryptography`库来进行AES文本加密和解密操作。以下是简单的步骤:
1. **安装依赖**:
首先需要安装`cryptography`库,可以使用pip命令安装:
```
pip install cryptography
```
2. **导入模块**:
导入`cryptography.hazmat.primitives.ciphers`模块,以及`cryptography.hazmat.primitives.kdf.pbkdf2`进行密码哈希处理。
```python
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
from cryptography.hazmat.backends import default_backend
```
3. **设置密钥**:
使用用户的输入或者其他安全方式获取明文密码,并通过PBKDF2HMAC生成AES密钥。
```python
def get_key(password):
salt = b'some_salt' # 可以自定义盐值增加安全性
kdf = PBKDF2HMAC(algorithm=hashes.SHA256(), length=32, salt=salt, iterations=100000, backend=default_backend())
key = kdf.derive(password)
return key
```
4. **加密函数**:
创建一个AES块模式的实例并进行加密。
```python
def encrypt(plaintext, key):
cipher = Cipher(algorithms.AES(key), modes.CBC(b'\x00'*16), backend=default_backend())
encryptor = cipher.encryptor()
ciphertext = encryptor.update(plaintext.encode()) + encryptor.finalize()
iv = encryptor.iv
return ciphertext, iv
```
5. **解密函数**:
使用相同的密钥、IV和解密模式进行解密。
```python
def decrypt(ciphertext, iv, key):
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
decryptor = cipher.decryptor()
plaintext = decryptor.update(ciphertext) + decryptor.finalize().decode()
return plaintext
```
**示例使用**:
```python
password = input("请输入密码:")
key = get_key(password)
plaintext = "Hello, world!"
ciphertext, iv = encrypt(plaintext, key)
decrypted_text = decrypt(ciphertext, iv, key)
print(f"原文: {plaintext}")
print(f"加密后: {ciphertext.hex()}")
print(f"解密后: {decrypted_text}")
```
阅读全文