E ora veniamo alla lezione conclusiva. Ossia facciamo lo stesso che abbiamo già visto la lezione precedente ossia cifrazione e chiave di cifrazione di un algoritmo AES, ossia di una chiave simmetrica.
Sulla falsa riga della scorsa lezione vedremo quindi come creare una chiave simmetrica. Quindi identica sia per cifrare che per decifrare e successivamente codificheremo il testo.
Ovviamente non torneremo sui concetti teorici per i quali vi rimandiamo alla lezione sulla Sicurezza Informatica chiave simmetrica.
Algoritmo Java a Chiave simmetrica con AES
Il primo passo sarà quindi generare la chiave con algoritmo AES e codificarlo in Base64 , quindi avremo
KeyGenerator keycreated = KeyGenerator.getInstance("AES");
SecretKey secretKey = keycreated.generateKey();
String secretKey1 =
Base64.getEncoder().encodeToString(secretKey.getEncoded());
System.out.println("generated key = "+secretKey1);
dove come potete vedere abbiamo utilizzato 2 classi predefinite per l’Encrypt da Java che sono Keygenerator e Base64 e relativi metodi.
Ora Mettiamo che vogliamo cifrare un messaggio di prova dovremo quindi richiamare la classe Cipher per la cifratura del testo , ovviamente questa volta con la classe AES nello specifico AES/CBC/PKCS5Padding
Lo inizializzeremo , cripteremo la stringa , ridurremo in bytes il testo criptato e quindi lo manderemo a video ossia
Cipher enCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
byte[] InitVectorBytes = keyCreate.generateKey().getEncoded();
IvParameterSpec parameterSpec = new IvParameterSpec(InitVectorBytes);
enCipher.init(Cipher.ENCRYPT_MODE,secretKey,parameterSpec);
String message = "Hi! Prove message";
byte[] encryptedMessageBytes =
enCipher.doFinal(message.getBytes());
String encryptedMsg =
Base64.getEncoder().encodeToString(encryptedMessageBytes);
System.out.println("Encrypted message = "+encryptedMsg);
In maniera del tutto analoga per decriptare avremo
//Decrypt the encrypted message
Cipher deCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
deCipher.init(Cipher.DECRYPT_MODE,secretKey,parameterSpec);
byte[] decryptedMessageBytes =
deCipher.doFinal(encryptedMessageBytes);
String decryptedMessage = new String(decryptedMessageBytes);
System.out.println("decrypted message ="+decryptedMessage);
Che come potete vedere è solo il procedimento inverso di quanto vi abbiamo mostrato sopra. Questo il risultato dello script

Lo potete vedere su console in alto a destra. Il software utilizzato nello specifico è Eclipse. Personalmente io continuo a utilizzarlo in quanto praticamente ho iniziato a programmare con questo linguaggio , ma anche le ultime versioni di Java NetBeans sono ottime. Se siete alla ricerca di un Compilatore Java ce ne sono di ottimi on line oppure vi consiglio di provare uno che si chiama DrJava.
Potete trovare il codice java su GIthub sladfive Chiave RSA e AES
Devi effettuare l'accesso per postare un commento.