javax.crypto.IllegalBlockSizeException в шифровании AES - PullRequest
0 голосов
/ 08 мая 2009

Я использую стандарт заполнения AES / CBC / PKCS5Padding в Java, и мой друг использует стандарт PKCS7 в c # .NET Если мой друг зашифрует данные с помощью AES и отправит мне ключ, я смогу расшифровать его.

Но если длина моих данных увеличивается более чем на 2920 байт, то, если я зашифрую данные в c # .NET и расшифрую данные в java, тогда моя расшифровка не будет работать хорошо. Это дает мне следующую ошибку.

"javax.crypto.IllegalBlockSizeException: длина ввода должна быть кратна 16 при расшифровке с использованием шифра с добавлением"

Спасибо Бапите

Ответы [ 2 ]

1 голос
/ 08 мая 2009

Вы снова забыли очистить буферы, что означает, что поток данных неполон.

[EDIT] Я не знаю о C #, но в Java вы должны вызывать doFinal () один раз после получения всех данных. (См. документы ).

Источник проблемы в том, что API шифрования должен знать, когда вы закончите. Он не может судить по данным, вы должны вызвать метод, чтобы сказать: «оберните его, создайте окончательную контрольную сумму, что угодно, чтобы получатель мог ее декодировать».

0 голосов
/ 24 марта 2010

просто используйте cipher.dofinal("Your byte array","offset...put 0","block size...16");

eg : c.dofinal(ByteArray,0,16);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...