Originariamente inviata da
andbin
Non sei ovviamente tu che devi implementare l'algoritmo in sé (troppo complesso per chi non ha le basi necessarie ... a meno che tu le abbia). È sufficiente che ci sia un "provider" della security Java che fornisca la implementazione.
Intendo crittografia a chiave simmetrica, originata da una password, che è quella inserita dall'utente. Quindi la password la sa (la deve sapere!) solo l'utente e non viene memorizzata da alcuna parte.
Si per implementare intendevo realizzare, ho abusato del termine.
Si è vero la password la può scegliere l'utente...in effetti.
Io tento di cifrare e decifrare cosi':
codice:
String Key = "MySecretPass";
SecretKeySpec keySpec = new SecretKeySpec(Key.getBytes(), "AES");
String text = "Questo è un testo da cifrare";
byte[] cifrati = cifra(text.getBytes(), keySpec);
byte[] decifrati = decifra(cifrati, keySpec);
public static byte[] cifra(byte[] bytes, Key key) throws Exception{
Cipher c = Cipher.getInstance("AES/ECB/PKCS5Padding");
c.init(Cipher.ENCRYPT_MODE, key);
byte[] cifrati = c.doFinal(bytes);
return cifrati;
}
public static byte[] decifra(byte[] bytes, Key key) throws Exception{
Cipher c = Cipher.getInstance("AES/ECB/PKCS5Padding");
c.init(Cipher.DECRYPT_MODE, key);
byte[] decifrati = c.doFinal(bytes);
return decifrati;
}
E sembra funzionare bene, tuttavia siccome poi devo creare un "protocollo" per salvare i dati, allora fatico a rileggerli.
Con il mio algoritmo di cifratura/decifratura il protocollo lo riesco a creare <ad hoc> invece, anche se l'algoritmo lascia sicuramente a desiderare rispetto AES.
Comunque non ho ben chiaro cosa sia il padding? Ed il provider?