Używam szyfru AES z 16-bajtowym rozmiarem bloku.Java Cipher - AES Padding Problem
Jeśli spróbuję zaszyfrować ciąg 16-bajtowy, nie mam żadnych problemów, ale każda inna długość, a nie wielokrotność liczby 16, rzuca wyjątek.
Wiem, że przy pomocy 3-DES można określić rodzaj wypełnienia jako część algorytmu i jest on obsługiwany bez dodatkowej pracy (na przykład DES/CBC/PKCS5Padding), ale czy istnieje sposób na określenie tego z AES?
Czy muszę ręcznie spakować pytki do wielokrotności liczby 16, a następnie rozebrać je po odszyfrowaniu? Oto skrócona próbka kodu.
encrypt = Cipher.getInstance("AES", provider);
encrypt.init(Cipher.ENCRYPT_MODE, key) ;
byte[] encrypted = encrypt.doFinal(plainTxt.getBytes()) ;
Wszelkie odpowiedzi zostały docenione!
Dzięki z góry, Ciarán
Komentarz pedantyczny: AES ma tylko 16-bajtowe bloki z definicji. Rijndael (oryginalna nazwa i specyfikacja) miał bloki 16, 24 i 32 bajty, ale do użytku w AES dozwolone jest tylko 16 bloków bajtowych. Rijndael wspierał również klawisze 128, 160, 192, 224, 256, ale tylko AES obsługuje tylko 128, 192 i 256. –