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

È stato utile?

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).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top