要实现AES 256位加密和解密,可以使用Python的cryptography库。下面是一个代码示例:
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import padding
def aes_256_encrypt(key, plaintext):
backend = default_backend()
iv = b'0123456789abcdef' # 初始化向量
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=backend)
encryptor = cipher.encryptor()
padder = padding.PKCS7(algorithms.AES.block_size).padder()
padded_plaintext = padder.update(plaintext) + padder.finalize()
ciphertext = encryptor.update(padded_plaintext) + encryptor.finalize()
return ciphertext
def aes_256_decrypt(key, ciphertext):
backend = default_backend()
iv = b'0123456789abcdef' # 初始化向量
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=backend)
decryptor = cipher.decryptor()
padded_plaintext = decryptor.update(ciphertext) + decryptor.finalize()
unpadder = padding.PKCS7(algorithms.AES.block_size).unpadder()
plaintext = unpadder.update(padded_plaintext) + unpadder.finalize()
return plaintext
# 用一个256位的密钥进行加解密示例
key = b'\x00' * 32
plaintext = b'Hello, World!'
ciphertext = aes_256_encrypt(key, plaintext)
print("加密后的密文:", ciphertext)
decrypted_plaintext = aes_256_decrypt(key, ciphertext)
print("解密后的明文:", decrypted_plaintext)
请注意,这个示例使用了一个固定的初始化向量(iv),在实际应用中,应该使用随机生成的iv,并将其与密文一起存储。另外,这个示例使用了PKCS7填充,也可以使用其他填充方式(如PKCS5)。
确保在使用此代码示例时,已安装cryptography
库(可以通过pip install cryptography
安装)