Java Cipher - Problema di riempimento AES
-
19-08-2019 - |
Domanda
Sto usando un codice AES con una dimensione del blocco di 16 byte.
Se provo a crittografare una stringa di 16 byte non ho problemi, ma qualsiasi altra lunghezza non un multiplo di 16 genera un'eccezione.
So che con 3-DES puoi specificare un tipo di riempimento come parte dell'algoritmo ed è gestito senza lavoro extra (ad esempio DES / CBC / PKCS5Padding), ma c'è un modo per specificarlo con AES?
O devo riempire manualmente i pytes con un multiplo di 16 e quindi rimuoverli quando decrittografo? Ecco un esempio di codice abbreviato.
encrypt = Cipher.getInstance("AES", provider);
encrypt.init(Cipher.ENCRYPT_MODE, key) ;
byte[] encrypted = encrypt.doFinal(plainTxt.getBytes()) ;
Ogni e tutte le risposte sono apprezzate!
Grazie in anticipo, Ciar & # 225; n
Soluzione
Dovrebbe funzionare esattamente allo stesso modo con AES, ovvero la modalità di riempimento deve essere specificata insieme al codice. Quali modalità di riempimento sono implementate dipende dal provider e dovrebbero essere descritte nella sua documentazione
Secondo la documentazione JCE: http://java.sun.com /j2se/1.5.0/docs/guide/security/jce/JCERefGuide.html#AppA le modalità di padding standard come PKCS5Padding dovrebbero essere sempre supportate (almeno, è così che lo interpreto).