Java-шифр - проблема заполнения AES
-
19-08-2019 - |
Вопрос
Я использую шифр 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 (по крайней мере, так я это интерпретирую).