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

python aes

作者:冷言寡语   发布日期:2026-05-20   浏览:123

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)

# 要加密的明文
plaintext = b'This is a secret message'

# 使用PKCS7填充方式对明文进行填充
padded_plaintext = pad(plaintext, AES.block_size)

# 加密过程
ciphertext = cipher.encrypt(padded_plaintext)

# 打印密文和初始化向量(IV)
print("Ciphertext:", ciphertext)
print("IV:", cipher.iv)

# 解密过程
decipher = AES.new(key, AES.MODE_CBC, cipher.iv)
unpadded_decrypted_text = unpad(decipher.decrypt(ciphertext), AES.block_size)

# 打印解密后的明文
print("Decrypted text:", unpadded_decrypted_text.decode())

解释说明:

  1. 导入库:从 Crypto.Cipher 导入 AES 模块,从 Crypto.Random 导入 get_random_bytes 用于生成随机密钥,从 Crypto.Util.Padding 导入 padunpad 用于填充和去除填充。
  2. 生成密钥:使用 get_random_bytes(16) 生成一个16字节(128位)的随机密钥。
  3. 创建AES加密器对象:使用 AES.new 方法创建一个 AES 加密器对象,指定密钥和模式为 CBC(Cipher Block Chaining)。
  4. 填充明文:AES 是分组密码,要求输入数据长度是块大小的倍数。这里使用 PKCS7 填充方式对明文进行填充。
  5. 加密:调用 encrypt 方法对填充后的明文进行加密,得到密文。
  6. 打印密文和初始化向量(IV):密文和 IV 都是二进制数据,可以打印出来查看。
  7. 解密:使用相同的密钥和 IV 创建一个新的 AES 解密器对象,解密密文并去除填充,最终得到原始明文。

如果需要进一步的帮助或有其他问题,请告诉我!

上一篇:python ==

下一篇:int函数python

大家都在看

python 二维码识别

python excel 库

python时间格式

pythoneval函数用法

列表切片操作python

python读取文件路径

staticmethod在python中有

python 保存json文件

python的assert基本用法

python开发windows应用程序

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

Laravel 中文站