Python Шифрование AES. Первые 16 символов каждого файла, но один заменяется закодированными байтами - PullRequest
1 голос
/ 14 апреля 2020

Основой этой задачи, которую я пытаюсь выполнить, является следующее.

Для заданного каталога (в данном случае я использую «/ детская площадка») используйте шифрование AES для шифрования всех файлов .txt. Затем эти файлы можно расшифровать, запустив два отдельных сценария python (один для создания ключа в требуемом формате, а другой для расшифровки).

Проблема, с которой я сталкиваюсь, заключается в том, что есть один файл, который, кажется, для шифрования и дешифрования это просто отлично. Однако, когда у меня несколько файлов, первые 16 байтов каждого файла повреждены, за исключением одного файла. Я полагаю, что это может быть проблема с заполнением файлов и IV, но я очень новичок в этом и не могу решить это. Структуру каталога и файлов можно увидеть ниже.

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

1 Ответ

1 голос
/ 14 апреля 2020

Происходит то, что вы используете один и тот же объект шифрования для шифрования разных файлов. Вы не должны этого делать; Вы должны создать новый объект шифрования для каждого шифрования и создать fre sh IV. IV обычно добавляется к зашифрованному тексту для режима CB C.

В CB C предыдущий блок зашифрованного текста используется в качестве «вектора» для шифрования следующего блока. Если вы продолжаете шифрование с помощью того же шифра, то открытый текст начального блока файла XOR-редактируется с зашифрованным текстом предыдущего файла: последний блок зашифрованного текста последнего файла действует как IV. Если вы не расшифруете в точно в том же порядке, то дешифрование завершится неудачей для первого блока из 16 байтов. Конечно, вы хотите убедиться, что расшифровка файлов не зависит от других файлов - регулировка порядка дешифрования не является хорошим решением.

...