Как мне реализовать режим CBC?

Моя проблема заключается в алгоритме шифрования AES и внедрении IV в алгоритм. У меня работает ECB-версия AES, и я тщательно проверил ее. Я пытаюсь сделать это более безопасным, добавив в IV. Я хочу понять это лучше, зная, как IV реализован в алгоритме.

Я понимаю, что IV шифруется XOR с обычным текстом перед шифрованием, а затем IV сохраняется с зашифрованными данными для расшифровки. Но затем, когда я перехожу к дешифрованию, я делаю то же самое вычисление XOR после процесса дешифрования?

Я попробовал описанный выше процесс, и мой тест на шифрование и дешифрование работает с одинаковыми значениями, но когда я размещаю два процесса рядом, я получаю значения, очень близкие друг к другу, но, похоже, он работает не совсем правильно. Не просить исправления кода, просто процесс, изложенный для меня, чтобы я знал, что я делаю это правильно. Благодарю.

1 ответ

Решение

Я всегда нахожу диаграммы Википедии полезными для визуализации того, что происходит в режиме CBC:

диаграмма вики

Вам нужно расшифровать первый блок зашифрованного текста, затем XOR IV, чтобы получить первый блок открытого текста. После этого вам нужно XOR предыдущего блока зашифрованного текста с текущим блоком дешифрованных данных.

Другие вопросы по тегам