Python AES加密。每个文件的前16个字符,但有一个被编码字节替换

2024-10-01 04:54:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试做的这项任务的基础如下

对于给定的目录(在本例中,我使用“/playerly”)使用AES加密来加密所有.txt文件。然后,可以通过运行两个单独的python脚本(一个用于创建所需格式的密钥,另一个用于解密)对这些文件进行解密

我面临的问题是,当我有一个文件时,它似乎可以对它进行加密和解密。但是,当我有多个文件时,每个文件的前16个字节都会损坏,只有一个文件除外。我相信这可能是一个填充文件和静脉注射的问题,但我对此非常陌生,无法解决。目录和文件的结构如下所示

|
|-- encrypt.py
|-- recover_key.py
|-- decrypt.py
|-- pem_private_key.pem
|-- playground
| |-- file1.txt
| |-- file2.txt
| |-- file3.txt
|

Tags: 文件keypy目录txt脚本字节格式
1条回答
网友
1楼 · 发布于 2024-10-01 04:54:03

发生的情况是,您使用相同的密码对象加密不同的文件。你不应该那样做;您应该为每个加密创建一个新的密码对象,并创建一个新的IV。对于CBC模式,IV通常作为密文的前缀

在CBC中,前一个密文块被用作“向量”来加密下一个块。如果您继续使用相同的密码进行加密,则文件起始块的明文将与前一个文件的密文异或:最后一个文件的最后一个密文块充当IV。如果您没有以完全相同的顺序进行解密,则第一个16字节的块的解密将失败。当然,您希望确保文件的解密不依赖于任何其他文件——调整解密顺序不是一个好的解决方案

相关问题 更多 >