Ich verwende eine AES-Chiffre mit einer 16-Byte-Blockgröße.Java Cipher - AES Padding Problem
Wenn ich versuche, eine 16-Byte-Zeichenfolge zu verschlüsseln, habe ich keine Probleme, aber jede andere Länge als ein Vielfaches von 16 wirft eine Ausnahme.
Ich weiß mit 3-DES können Sie einen Auffüllungstyp als Teil des Algorithmus angeben, und es wird ohne zusätzliche Arbeit (z. B. DES/CBC/PKCS5Padding) behandelt, aber gibt es eine Möglichkeit, dies mit AES anzugeben?
Oder muss ich die Bytes manuell auf ein Vielfaches von 16 auffüllen, und dann entkleiden, wenn ich entschlüsseln? Hier ist ein abgekürztes Codebeispiel.
encrypt = Cipher.getInstance("AES", provider);
encrypt.init(Cipher.ENCRYPT_MODE, key) ;
byte[] encrypted = encrypt.doFinal(plainTxt.getBytes()) ;
Alle und alle Antworten geschätzt!
Vielen Dank im Voraus, Ciarán
pedantischer Kommentar: AES hat per Definition nur eine Blockgröße von 16 Byte. Rijndael (der ursprüngliche Name und die ursprüngliche Spezifikation) hatten Blockgrößen von 16,24 und 32 Bytes, aber zur Verwendung in AES sind nur 16-Byte-Blöcke erlaubt. Rijndael unterstützte auch die Schlüsselgrößen 128, 160, 192, 224, 256, aber nur 128, 192 und 256 werden in AES unterstützt. –