Можем ли мы использовать один режим для шифрования, а другой для дешифрования в AES?

На стороне сервера используется режим шифрования AES / ECB / PKCS5Padding, а на стороне клиента (на мобильном устройстве) можно ли расшифровать его с помощью AES / CBC / PKCS5Padding. Или нам нужно использовать один и тот же режим для стороны сервера и клиента?

Пожалуйста, порекомендуйте.


person Kris    schedule 26.02.2015    source источник


Ответы (1)


Режимы ECB и CBC принципиально разные (wikipedia). ECB просто применяет блочный шифр к каждому блоку открытого текста с ключом отдельно, но CBC XOR выполняет текущий блок открытого текста с последним блоком зашифрованного текста.

Точно такой же режим и заполнение необходимы для расшифровки за один раз. Если у вас есть доступ к AES/CBC/NoPadding, но нет AES/ECB/PKCS5Padding или AES/ECB/NoPadding, вы можете расшифровать AES/ECB/PKCS5Padding-зашифрованные данные, расшифровав каждый блок отдельно.

ECB - это режим, в котором каждый блок зашифрован точно так же, а не связан с предыдущим блоком, как в режиме CBC. Таким образом, вы можете использовать режим CBC для дешифрования каждого блока отдельно, что приводит к режиму ECB. IV должен быть установлен в 0x00 байт, а последний блок должен быть расшифрован с помощью AES/CBC/PKCS5Padding и нулевого IV.

person Artjom B.    schedule 26.02.2015
comment
ECB и CBC по своей сути разные: en.wikipedia.org/wiki/Block_cipher_mode_of_operation - person Artjom B.; 26.02.2015
comment
спасибо Artjom за ценную информацию. Я работаю над мобильным приложением (j2me). Вы знаете, что надувной замок имеет шифрование / дешифрование в режиме ECB, потому что на стороне сервера используется режим ECB. или любую другую библиотеку ECB для j2me? какая-нибудь информация по этому поводу? - person Kris; 26.02.2015
comment
Я не знаю, но я был бы очень удивлен, если бы ECB не поддерживался, поскольку это самый базовый режим. - person Artjom B.; 26.02.2015