Java AES расшифровывает zip-файлы с неправильным заголовком

Я столкнулся со странной проблемой при расшифровке zip-потока.

После того, как я расшифровал данный поток, у меня есть точно такой же массив байтов, кроме 8 байтов заголовка.

Это должно быть 50 4B 03 04 (согласно спецификации Zip), но я получаю другое.

Когда я расшифровываю тот же поток в С#, заголовок правильный. Я использую RijndaelManaged, режим CBC, заполнение ZeroBytePadding и размер блока = 128.

В Java я использую размер блока AES/CBC/NoPadding = 128 для расшифровки.

Я считаю, что причина в заполнении, но тогда я не понимаю, почему остальные байты верны.


person nixspirit    schedule 15.02.2012    source источник
comment
Что вы используете для вектора инициализации при расшифровке? Если вы не знаете, что такое капельница, это ваша проблема.   -  person erickson    schedule 16.02.2012
comment
ты был так прав. Причина была неправильной IV. Большое спасибо. Люблю stackoverflow. Это делает людей счастливее   -  person nixspirit    schedule 16.02.2012


Ответы (1)


В режиме CBC режим заполнения должен влиять только на последние байты вашего сообщения, а не на первые (т. е. от ZeroBytePadding до NoPadding вы можете получить несколько добавленных 0 байтов в конце).

Если ваш первый блок отличается (но остальные совпадают), наиболее вероятной причиной является другой вектор инициализации в шифровании и дешифровании. Проверь это.

person Paŭlo Ebermann    schedule 15.02.2012