Non so perché ma questo codice funziona 4/5, in quanto alla quinta/sssta esecuzione in genere lancia la seguente eccezione:
"Exception in thread "main" javax.crypto.BadPaddingException: Given final block not properly padded" .
In particolare la riga incriminata è
String original = new String(c.doFinal(password_crittata.getBytes()));
Non riesco a capire il perché, se ha capito dove sto sbagliando e può cortesemente indicarmelo gliene sarei lieto.
grazie
----
edit:
prove di fix che ho effettuato:
1) Ho impostato come valore della grandezza massima del "generatore di chiavi" a 128;
altri problemi che ci sono e non ho notato prima:
1) In alcuni casi, non vi è nessuna eccezione, ma non "decripta" in modo corretto.
Molto probabilmente sto sbagliando con la chiave, ma non riesco a capire come mai.
----
edit2:
Spulciando su google ho trovato uno che aveva un problema simile e gli è stato suggerito di utilizzare Base64.encode(...) e Base64.decode(...).
Con le opportune modifiche le ho inserite nel mio codice su:
-
String password_crittata = new String(Base64.encode(c.doFinal(password.getBytes())));
-
String original = new String(c.doFinal(Base64.decode(password_crittata)));
Ora sembra funzionare tutto correttamente e senza errori.
Ora il problema è che non ho capisco il perché ora tutto funzioni, e ovviamente questa cosa non mi 'garba'.