用python调用程序库中的AES算法,实现AES加密和解密。
时间: 2024-09-25 19:17:03 浏览: 71
在Python中,你可以使用`cryptography`这个流行的库来实现AES(高级加密标准)的加密和解密功能。首先,你需要安装这个库,如果你还没有安装,可以使用pip命令:
```bash
pip install cryptography
```
然后,下面是一个简单的示例,展示了如何使用AES模式(如CBC、ECB等)对数据进行加解密:
```python
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
import base64
# 密码哈希(这里假设密码已存在)
password = b"your_secret_password"
salt = b'some_salt'
kdf = PBKDF2HMAC(
algorithm=hashlib.sha256,
length=32, # AES key长度
salt=salt,
iterations=100000, # 可调整迭代次数增加安全性
backend=default_backend()
)
# 加密函数
def encrypt(plaintext, key):
cipher = Cipher(algorithms.AES(key), modes.CBC(key[:16]), backend=default_backend())
encryptor = cipher.encryptor()
ciphertext = encryptor.update(plaintext) + encryptor.finalize()
return base64.b64encode(ciphertext).decode('utf-8')
# 解密函数
def decrypt(ciphertext, key):
key = kdf.derive(key)
ciphertext_b64 = base64.b64decode(ciphertext.encode('utf-8'))
cipher = Cipher(algorithms.AES(key), modes.CBC(key[:16]), backend=default_backend())
decryptor = cipher.decryptor()
plaintext = decryptor.update(ciphertext_b64) + decryptor.finalize()
return plaintext.decode('utf-8')
# 示例
plaintext = "Hello, World!"
key = kdf.derive(password)
ciphertext = encrypt(plaintext.encode('utf-8'), key)
print("Encrypted:", ciphertext)
decrypted_text = decrypt(ciphertext, password)
print("Decrypted:", decrypted_text)
```
在这个例子中,我们使用了PKCS5薛定谔盐(PBKDF2)对密码进行了安全的哈希,生成了一个密钥。注意实际应用中需要妥善处理用户输入和存储的安全性。
阅读全文