LINUX.ORG.RU

странно работает openssl в режиме ECB

 , ,


0

2

Пытаюсь зашифровать один блок (16 байт) данных с помощью aes-128-ecb (поблочное шифрование без сцепления шифротекста) — соответственно, ожидаю, что на выходе из 16 байт исходного текста получится 16 байт шифрованного. openssl почему-то добавляет туда еще шифрованный nonce.

Исходные данные:

$ xxd open.dat 
0000000: 0001 0203 0405 0607 0809 0a0b 0c0d 0e0f  ................

$ openssl enc -aes-128-ecb -e -K 00000000000000000000000000000000 -iv 00000000000000000000000000000000 -in open.dat -out out.dat

$ xxd out.dat 
0000000: 0fb5 d019 0539 afdf 30e9 5500 5859 6cc5  .....9..0.U.XYl.
0000010: 7d07 5d65 6b71 2b5f 91ff 62ec 20d9 5aac  }.]ekq+_..b. .Z.

out.dat почему-то содержит 32 байта вместо 16. Я ошибаюсь, или так действительно должно быть?

★★★★★

Последнее исправление: demidrol (всего исправлений: 1)
Ответ на: комментарий от Vovka-Korovka

без IV openssl вроде не запускается. И таки не понял — про какой паддинг идет речь? Padding вроде заполняет данные до величины, кратной длине блока. А у меня данные и так ровно один блок занимают.

demidrol ★★★★★
() автор топика
Ответ на: комментарий от demidrol

без IV openssl вроде не запускается.

с ecb шифром запускается, так как для него IV не нужен.

Padding вроде заполняет данные до величины, кратной длине блока.

Правильно. Причем последний байт padding всегда занят для обозначения его длинны. Поэтому, если блок полный, то последний байт все равно будет занят под длинну, которая будет равна нулю. Иначе же при декодировании будет не понятно - у тебя блок неполный или просто данные такие.

Vovka-Korovka ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.