下面是一个使用Python中的cryptography
库来实现AES 256加密和解密的示例代码:
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.asymmetric import padding as asymmetric_padding
from cryptography.hazmat.primitives import hashes
def encrypt_aes_256(message, key):
# 生成一个随机的IV
iv = os.urandom(16)
# 创建AES加密器
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
encryptor = cipher.encryptor()
# 使用PKCS7填充方式进行填充
padder = padding.PKCS7(128).padder()
padded_data = padder.update(message) + padder.finalize()
# 加密数据
encrypted_data = encryptor.update(padded_data) + encryptor.finalize()
# 返回加密后的数据和IV
return encrypted_data, iv
def decrypt_aes_256(encrypted_data, key, iv):
# 创建AES解密器
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
decryptor = cipher.decryptor()
# 解密数据
decrypted_data = decryptor.update(encrypted_data) + decryptor.finalize()
# 使用PKCS7填充方式进行解填充
unpadder = padding.PKCS7(128).unpadder()
unpadded_data = unpadder.update(decrypted_data) + unpadder.finalize()
# 返回解密后的数据
return unpadded_data
# 使用一个256位的密钥
key = b'0123456789abcdef0123456789abcdef'
# 要加密的数据
message = b'Hello, AES 256 Encryption!'
# 加密数据
encrypted_data, iv = encrypt_aes_256(message, key)
print("Encrypted Data:", encrypted_data)
# 解密数据
decrypted_data = decrypt_aes_256(encrypted_data, key, iv)
print("Decrypted Data:", decrypted_data)
请注意,这个示例使用了cryptography
库来实现AES加密和解密。确保你已经安装了该库,可以使用以下命令来安装:
pip install cryptography
在示例中,encrypt_aes_256
函数使用AES 256位密钥和随机生成的IV加密给定的消息,并返回加密后的数据和IV。decrypt_aes_256
函数使用相同的密钥和IV来解密加密的数据,并返回解密后的消息。
请注意,这只是一个简单的示例,实际使用中可能需要更多的错误处理和安全措施。