Python实现AES加密进行PKCS5Padding的填充

本文详细介绍了如何在Python中使用AES加密技术,并结合PKCS5Padding进行数据填充。通过示例代码展示了加密和解密过程,以及对应的测试结果,帮助读者理解AES加密在实际应用中的操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python实现AES加密进行PKCS5Padding的填充
在这里插入图片描述
(1)Python 需要导入的模块
在这里插入图片描述
(2)AES加密代码
在这里插入图片描述
(3)AES解密代码
在这里插入图片描述
(4)测试代码
在这里插入图片描述
(5)测试结果
在这里插入图片描述

### PythonAES-CBC-PKCS5Padding 实现 为了在Python实现AES加密算法的CBC模式并采用PKCS5填充,可以利用`pycryptodome`库来完成这一操作。下面提供了一个完整的例子,展示了如何进行数据的加密和解。 #### 安装依赖包 首先需要安装 `pycryptodome` 库,可以通过pip命令轻松安装: ```bash pip install pycryptodome ``` #### 数据准备与处理函数定义 对于输入的数据,在执行加密之前应当确保其长度为区块大小(通常是16字节)的整数倍。如果不足,则需按照指定的方式补充至合适长度;而在解之后也需要去除这些额外添加的部分以恢复原始消息[^2]。 #### 加密过程 创建一个用于加密的方法如下所示: ```python from Crypto.Cipher import AES import base64 def pad(text, block_size=16): """根据PKCS5标准对文本进行补位""" text_length = len(text) amount_to_pad = block_size - (text_length % block_size) if amount_to_pad == 0: amount_to_pad = block_size padding = chr(amount_to_pad) * amount_to_pad return str.encode(text + padding) def encrypt(plain_text, key, iv): cipher = AES.new(key=key, mode=AES.MODE_CBC, IV=iv) encrypted_bytes = cipher.encrypt(pad(plain_text)) return base64.b64encode(encrypted_bytes).decode('utf-8') ``` 此部分实现了基于给定秘钥key以及初始化向量IV下的字符串加密功能,并返回经过Base64编码后的结果以便于传输或存储。 #### 解过程 相应地,这里也给出了解码的过程: ```python def unpad(padded_text): unpadder = ord(padded_text[-1]) if unpadder < 1 or unpadder > 32: pass return padded_text[:-unpadder] def decrypt(ciphered_base64, key, iv): raw_cipher_data = base64.b64decode(ciphered_base64) cipher = AES.new(key=key, mode=AES.MODE_CBC, IV=iv) decrypted_bytes = cipher.decrypt(raw_cipher_data) return unpad(decrypted_bytes.decode()) ``` 上述代码片段完成了接收已编码的信息作为参数传入,通过逆运算还原成最初的明文形式。 #### 测试实例 最后附上一段简单的测试程序验证以上两个主要逻辑单元的功能是否正常工作: ```python if __name__ == "__main__": secret_key = b'your_secret_key_' init_vector = b'initializationVe' original_message = "你好世界" encoded_msg = encrypt(original_message, secret_key, init_vector) print(f"Encrypted message: {encoded_msg}") decoded_msg = decrypt(encoded_msg, secret_key, init_vector) print(f"Decoded message :{decoded_msg}") ``` 这段脚本会输出加密前后的信息对比,从而直观展示整个流程的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值