PDA

View Full Version : [Java] Cifrare e decifrare con RSA


Night82
27-07-2006, 17:22
Mi sto esercitando con RSA e JAVA. Con questo codice volevo cifrare la frase "Frase da cifrare!" e poi decifrarla ma mi risulta tutta un'altra cosa. Cosa sbaglio?


import java.security.*;
import javax.crypto.*;
import java.security.spec.*;

public class Mio{

public static void main(String[] args) throws Exception{

KeyPairGenerator kpg=null;
kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair kp = kpg.generateKeyPair();
PublicKey pubblica=kp.getPublic();
PrivateKey privata=kp.getPrivate();

String s=new String("Frase da cifrare!");
byte[] b=s.getBytes();

//CODIFICA
Cipher c=null;
byte[] encodeFile=null;

c = Cipher.getInstance("RSA/ECB/PKCS1Padding");
c.init(Cipher.ENCRYPT_MODE, pubblica);
encodeFile = c.doFinal(b);

//DECODIFICA
Cipher cc=null;
byte[] plainFile=null;

cc = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cc.init(Cipher.DECRYPT_MODE, privata);
plainFile = cc.doFinal(encodeFile);

String dec=plainFile.toString();
System.out.println("Frase decodificata: "+dec);
}
}

kingv
27-07-2006, 20:57
Hai fatto tutto bene tranne qui:
String dec=plainFile.toString();

dove al posto che generare una stringa usando l'array di byte chiedi una rappresentazione in forma di Stringa dell'array stesso.

sostituisci con:

String dec=new String(plainFile);

Night82
27-07-2006, 22:44
Hai fatto tutto bene tranne qui:
String dec=plainFile.toString();

dove al posto che generare una stringa usando l'array di byte chiedi una rappresentazione in forma di Stringa dell'array stesso.

sostituisci con:

String dec=new String(plainFile);
Ottimo, grande!

Night82
28-07-2006, 08:25
Gli algoritmi di firma digitale in java possono essere usati per firmare un oggetto java? Tipo: ho un oggetto Persona (con vari campi) e voglio firmarlo (usando la firma che si basa si RSA) da un'entità nota in modo che sia riconosciuta valida.

PS Quindi se mi dite che posso firmare un oggetto posso anche cifrarlo e inviarlo cifrato?

beef81
28-07-2006, 13:30
ciao ragazzi
visto che parlate di rsa e java allora sicuramente avete la soluzione x me.
mi servono i plugin per eclipse IAIK PKCS11
non datemi il link dell'università di bologna che già ci sono andato e non funziona.
grazie a tutti
ciao :confused:

Night82
29-07-2006, 08:46
Gli algoritmi di firma digitale in java possono essere usati per firmare un oggetto java? Tipo: ho un oggetto Persona (con vari campi) e voglio firmarlo (usando la firma che si basa si RSA) da un'entità nota in modo che sia riconosciuta valida.

PS Quindi se mi dite che posso firmare un oggetto posso anche cifrarlo e inviarlo cifrato?
Rinfresco la domanda facendo una considerazione: mi sembra impossibile che non sia mai stata ideata una cosa del genere. Anziché cifrare solo un tipo di dato alla volta si potrebbe cifrare tutti i campi di un oggetto mantenendo memoria della struttura dell'oggetto. Poi basterebbe una funzione per ripristinare in chiaro le info dell'oggetto.

Anzi me la potrei fare da solo a sto punto.

Night82
29-07-2006, 13:24
Ok, ho fatto da me!