sto facendo adesso una chat con canale sicuro, utilizzo RSA praticamente genero una chiave pubblica del client che la invierà al server, il quale a sua volta creerà la sua chiave pubblica e la invierà al client. Sia i server sia i client naturalmetne avranno anche la loro chiave privata, a questo punto i dati vengono cirfati con la chiave pubblica del destinatario e il destinatario li decodifica con la sua privata che non è stata mandata per la rete per evitare intercettazioni(se uno prende la pubblica può solo codificare).
Le chiavi le generi così:
Per ripristinare la chiave codificata(con getEncode) devi usare la classecodice:import javax.crypto.*; import java.security.*; import java.security.spec.*; ... private KeyPairGenerator kpg; private KeyPair kp; private PublicKey serverPublicKey; private PublicKey myPublicKey; ... private void doSafeTheChannel() { try { kpg = KeyPairGenerator.getInstance("RSA"); kpg.initialize(1024); kp = kpg.generateKeyPair(); myPublicKey = kp.getPublic(); bos.write("/KEY|"+myPublicKey.getEncoded()); } catch (Throwable t) { t.printStackTrace(); } }
X509EncodedKeySpec per la pubblica
Questo con il JCE di Sun standard(in teoria dal jdk 1.3 in poi c'è RSA, io uso la 5) quindi presente nella documentazione.
![]()