Режим AES ECB требует заполнения, почему у нас теперь есть этот AES/ECB/NOPADDING?
Мы используем приведенный ниже шифр
AES/ECB/NOPADDING
Но я немного запутался, потому что режимы типа ECB требуют дополнения ввода в соответствии с размером блока. Но здесь мы говорим NOPADDING. Не выглядят они противоречиво.
Можем ли мы иметь произвольные данные, которые не дополняются как ввод в режим ECB.
1 ответ
"Необработанные" режимы шифрования ECB без применения дополнения, как, например, AES/ECB/NOPADDING, в основном являются чистым применением функции шифрования к N блокам данных. Они полезны для разработчиков, которым необходимо реализовать пользовательские режимы, которые не поставляются по умолчанию. Любой режим работы каким-то образом построен из необработанной функции шифрования.
Тем не менее, поскольку блочный шифр может работать только с блоками полной длины, некоторая форма заполнения может быть применена к последнему блоку. Это оставлено на усмотрение разработчика, они будут реализовывать любую форму заполнения, указанную / рекомендованную для режима, который они хотят реализовать. Есть много возможностей, и именно поэтому у нас есть "NOPADDING" - оставить выбор набивки до нас.
Эти режимы, XXX/ECB/NOPADDING, никогда не должны использоваться напрямую. Как и любой другой режим ЕЦБ. Простое шифрование ECB очень небезопасно, например, оно не скрывает статистические свойства открытого текста (вы можете знать примеры, когда "зашифрованное" изображение все еще очень похоже на оригинал). Кроме того, как уже отмечалось, блочный шифр может работать только с полноразмерными блоками. Это требует применения пользовательской схемы заполнения, которая добавит еще один слой, где могут быть допущены ошибки, а не просто полагаться на реализацию по умолчанию.