Вопрос

Я использую шифр AES с размером блока 16 байт.

Если я пытаюсь зашифровать 16-байтовую строку, у меня нет проблем, но любая другая длина, не кратная 16, вызывает исключение.

Я знаю, что с 3-DES вы можете указать тип заполнения как часть алгоритма, и он обрабатывается без дополнительной работы (например, DES / CBC / PKCS5Padding), но есть ли способ указать это с помощью AES?

Или мне нужно вручную добавить в число, кратное 16, столбцы, а затем удалить их при расшифровке? Вот сокращенный пример кода.

encrypt = Cipher.getInstance("AES", provider);
encrypt.init(Cipher.ENCRYPT_MODE, key) ;
byte[] encrypted = encrypt.doFinal(plainTxt.getBytes()) ;

Любые ответы приветствуются!

Заранее спасибо, Ciar # 225 &, П

Это было полезно?

Решение

Он должен работать точно так же с AES, т. е. режим заполнения должен быть указан вместе с шифром. Какие режимы заполнения реализованы, зависит от поставщика и должно быть описано в его документации.

Согласно документации JCE: http://java.sun.com /j2se/1.5.0/docs/guide/security/jce/JCERefGuide.html#AppA всегда должны поддерживаться стандартные режимы заполнения, такие как PKCS5Padding (по крайней мере, так я это интерпретирую).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top