6 Stimmen

Java-Chiffre - AES-Auffüllproblem

Ich verwende eine AES-Verschlüsselung mit einer Blockgröße von 16 Byte.

Wenn ich versuche, eine 16-Byte-Zeichenfolge zu verschlüsseln, habe ich keine Probleme, aber jede andere Länge, die kein Vielfaches von 16 ist, löst eine Ausnahme aus.

Ich weiß, mit 3-DES können Sie einen Padding-Typ 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 angeben?

Oder muss ich die Pytes manuell auf ein Vielfaches von 16 auffüllen und sie dann beim Entschlüsseln entfernen? Hier ist ein abgekürztes Codebeispiel.

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

Wir freuen uns über jede Antwort!

Vielen Dank im Voraus, Ciarán

5voto

Michael Borgwardt Punkte 334642

Mit AES sollte es genauso funktionieren, d.h. der Auffüllmodus muss zusammen mit der Chiffre angegeben werden. Welche Auffüllungsmodi implementiert sind, hängt vom Anbieter ab und sollte in seiner Dokumentation beschrieben werden.

Laut der JCE-Dokumentation: http://java.sun.com/j2se/1.5.0/docs/guide/security/jce/JCERefGuide.html#AppA Standard-Padding-Modi wie PKCS5Padding sollten immer unterstützt werden (zumindest interpretiere ich das so).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X