Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

python aes 加密

作者:__龙泉丶聂风   发布日期:2025-07-31   浏览:18

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)

# 创建AES加密器对象,使用CBC模式
cipher = AES.new(key, AES.MODE_CBC)

# 要加密的数据(必须是16字节的倍数)
data = b'This is a secret message'

# 使用PKCS7填充方式将数据填充到16字节的倍数
padded_data = pad(data, AES.block_size)

# 加密数据
ciphertext = cipher.encrypt(padded_data)

# 输出加密后的数据和初始化向量(IV)
print("Ciphertext:", ciphertext.hex())
print("IV:", cipher.iv.hex())

# 解密数据
decipher = AES.new(key, AES.MODE_CBC, cipher.iv)
unpadded_data = unpad(decipher.decrypt(ciphertext), AES.block_size)

# 输出解密后的数据
print("Decrypted data:", unpadded_data.decode('utf-8'))

解释说明:

  1. 导入库:使用 Crypto.Cipher 模块中的 AES 类来进行加密和解密操作。Crypto.Random 用于生成随机密钥,Crypto.Util.Padding 用于数据填充。
  2. 生成密钥:使用 get_random_bytes(16) 生成一个16字节的随机密钥。
  3. 创建AES对象:使用 AES.new() 方法创建一个AES加密器对象,指定密钥和模式(这里使用CBC模式)。
  4. 填充数据:AES要求输入数据长度为16字节的倍数,因此使用 pad() 函数对数据进行填充。
  5. 加密数据:使用 encrypt() 方法对填充后的数据进行加密,并输出加密后的密文和初始化向量(IV)。
  6. 解密数据:使用相同的密钥和IV创建一个新的AES解密器对象,然后使用 decrypt() 方法解密密文,并使用 unpad() 函数去除填充。
  7. 输出结果:打印加密后的密文、IV以及解密后的原始数据。

希望这段代码和解释对你有所帮助!

上一篇:python continue和break

下一篇:python判断空值

大家都在看

python时间格式

python开发windows应用程序

python ord和chr

python中的yield

python自定义异常

python判断路径是否存在

python list.pop

python的for i in range

npm config set python

python代码简单

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站