python的AES256加解密
时间: 2024-03-28 20:35:49 浏览: 130
AES(Advanced Encryption Standard)是一种对称加密算法,其中AES-256是指使用256位密钥进行加密和解密的AES算法。Python中有多个库可以用于AES-256加解密,其中最常用的是`cryptography`库。
以下是使用`cryptography`库进行AES-256加解密的示例代码:
```python
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import padding
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
# 密钥和明文
password = b"your_password"
plaintext = b"your_plaintext"
# 生成随机盐值
salt = b"your_salt"
# 使用PBKDF2算法生成密钥
kdf = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=32,
salt=salt,
iterations=100000,
backend=default_backend()
)
key = kdf.derive(password)
# 生成随机的初始化向量
iv = b"your_iv"
# 使用CBC模式进行加密
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
encryptor = cipher.encryptor()
padder = padding.PKCS7(128).padder()
padded_plaintext = padder.update(plaintext) + padder.finalize()
ciphertext = encryptor.update(padded_plaintext) + encryptor.finalize()
# 使用CBC模式进行解密
decryptor = cipher.decryptor()
unpadder = padding.PKCS7(128).unpadder()
decrypted_padded_plaintext = decryptor.update(ciphertext) + decryptor.finalize()
decrypted_plaintext = unpadder.update(decrypted_padded_plaintext) + unpadder.finalize()
# 打印结果
print("加密后的密文:", ciphertext)
print("解密后的明文:", decrypted_plaintext)
```
请注意,以上示例代码中的密码、明文、盐值和初始化向量都是示例值,实际使用时需要根据具体情况进行替换。
阅读全文