Моя проблема заключается в алгоритме шифрования AES и внедрении IV в алгоритм. У меня есть версия ECB AES, и я ее тщательно протестировал. Я пытаюсь сделать его более безопасным, добавив в IV. Я хочу понять это лучше, зная, как IV реализуется в алгоритме.Как реализовать режим CBC?
Я понимаю, что IV является XOR'd с открытым текстом перед шифрованием, а затем IV хранится с зашифрованными данными для дешифрования. Но затем, когда я перехожу к расшифровке, я делаю то же вычисление XOR после процесса дешифрования?
Я пробовал описанный выше процесс, и мой тест на шифрование и дешифрование работает с одинаковыми значениями, но когда я ставил два процесса бок о бок, я получаю значения очень близко друг к другу, но он, похоже, не работает Совершенно верно. Не просить, чтобы код был исправлен, просто процесс, разработанный для меня, чтобы я знал, что делаю это правильно. Благодарю.
Если звучит так, как вы правильно применили режим CBC для шифрования и дешифрования. Вам придется подробно остановиться на «не совсем правильном» и «очень близком». в чем именно проблема?: – erickson
Прошу прощения за то, что вы так расплывчаты. В основном у меня есть модульные тесты, созданные с известными входами для шифрования и дешифрования. Оба проходят мои модульные тесты. Но тогда у меня есть модульные тесты, которые подпитывают мое шифрование в моем расшифровке, что должно просто вернуть мне то же самое. Но когда я смотрю на отладчик, значения равны 1 или около того. И поскольку XOR - единственное, что я добавил с тех пор, как я получил работу ЕЦБ, я просто не знаю, где это происходит. Но если я удалю свой XOR из дешифрования, то этот тест пройдет, и дешифрование завершится неудачей. При необходимости я могу опубликовать свои методы в редактировании. Благодарю. – Repareman
Надеюсь, это относится к классу/учебным целям - в противном случае вы обязательно должны ** не применять алгоритмы шифрования самостоятельно. ** AES кажется простым, но существует множество сложных нюансов реализации * (различные временные/другие побочные атаки) *, которые делают его нетривиальным для правильной реализации. –