from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
from Crypto.Util.Padding import pad, unpad
# 生成一个随机的16字节密钥
key = get_random_bytes(16)
# 要加密的数据
data = b'This is a secret message'
# 创建AES加密对象,使用CBC模式
cipher = AES.new(key, AES.MODE_CBC)
# 加密数据,需要先进行填充以确保长度是块大小的倍数
ct_bytes = cipher.encrypt(pad(data, AES.block_size))
# 获取初始化向量(IV)
iv = cipher.iv
# 打印加密后的数据和IV
print("Encrypted data:", ct_bytes.hex())
print("Initialization Vector (IV):", iv.hex())
# 解密数据
decipher = AES.new(key, AES.MODE_CBC, iv=iv)
pt = unpad(decipher.decrypt(ct_bytes), AES.block_size)
# 打印解密后的数据
print("Decrypted data:", pt.decode())
Crypto.Cipher
模块中导入 AES
类,从 Crypto.Random
模块中导入 get_random_bytes
函数用于生成随机密钥,从 Crypto.Util.Padding
模块中导入 pad
和 unpad
函数用于处理数据填充。get_random_bytes(16)
生成一个16字节的随机密钥。AES.new()
创建一个AES加密对象,并指定使用CBC模式。cipher.encrypt()
方法对数据进行加密,加密前需要使用 pad()
方法对数据进行填充以确保其长度是块大小的倍数。unpad()
方法去除填充并解密数据。希望这段代码和解释对你有帮助!
上一篇:python中range
下一篇:python字符串转json
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站