Python新手求助:如何用AES-ECB分块加密已填充字节串
AES-ECB分块加密实现指南
前置准备
首先需要安装pycryptodome库(Python标准库无内置AES实现),执行命令:
pip install pycryptodome
实现步骤与代码示例
假设你已经有符合16字节倍数要求的encoded_string(字节类型),以及符合AES规格的密钥(16字节对应AES-128,24字节对应AES-192,32字节对应AES-256),具体实现如下:
from Crypto.Cipher import AES # 1. 准备密钥,必须是16/24/32字节的字节串 key = b'your_16_byte_key_here' # 示例:16字节密钥 # 2. 初始化AES-ECB加密器 cipher = AES.new(key, AES.MODE_ECB) # 3. 分块加密并拼接密文 ciphertext = b'' # 按16字节步长循环切片分块 for i in range(0, len(encoded_string), 16): block = encoded_string[i:i+16] # 对每个块加密,直接拼接结果 ciphertext += cipher.encrypt(block) # ciphertext即为最终拼接完成的密文 print(ciphertext)
关键细节说明
- 分块逻辑:利用Python切片
encoded_string[i:i+16],从索引0开始每次取16字节,因你的encoded_string已满足16字节倍数要求,最后一块刚好是完整的16字节,无需额外处理边界。 - ECB模式提示:ECB是最基础的AES模式,无IV(初始化向量),相同明文块会生成相同密文块,安全性较低,生产环境不建议使用,优先选择CBC、GCM等更安全的模式。
- 类型要求:密钥、明文块必须是字节类型,若密钥是字符串,需用
key.encode('utf-8')转换为字节串。
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

