Ciao a tutti,
vi posto il main del codice che ho realizzato.
Esso funziona, ho il problema di come farlo eseguire in rete, ovvero il codice dovrebbe essere su un server, e mediante una comunicazione TCP, il client dovrebbe immettere i dati richiesti ed ottenerne in uscita.
Ho già preso delle dispense sulla comunicazione Client/Server TCP, ma ho il problema di non riuscire a farle funzionare(adattare x far funzionare il mio algoritmo in rete).
Questo è il mio codice Java:
Grazie a tutti per l'aiuto!!codice:import java.io.*; import java.util.Scanner; import java.util.ArrayList; import java.net.*; import java.math.BigInteger; import javax.swing.JOptionPane; public class RSA { /** * @param args the command line arguments * @throws java.io.IOException */ public static void main(String[] args) throws IOException { System.out.println("ALGORITMO RSA PER LA CODIFICA/DECODIFICA MESSAGGI"); Scanner in = new Scanner(System.in); ArrayList<Integer> valcarattere=new ArrayList(); ArrayList<Long> valcodificato=new ArrayList(); boolean trovatop=false, trovatoq=false; int certainty=977,mex=0; long p,q,n,e,d; p=0;q=0;;n=0;e=0;d=0; /*Chiedo di inserire p,q e controllo se sono primi, ed itero la richiesta di inserimento finchè non sono entrambi primi, chiedendo il solo numero non primo se già ne abbiamo immesso uno primo*/ while(trovatop!=true || trovatoq!=true) { if(trovatoq!=true && trovatop!=true) { System.out.println("Inserisci un numero primo 'p' :"); String ps=in.next(); BigInteger p11=new BigInteger(ps); if(p11.isProbablePrime(certainty)) { p=p11.longValueExact(); trovatop=true; } System.out.println("Inserisci un numero primo 'q' :"); String qs=in.next(); BigInteger q11=new BigInteger(qs); if(q11.isProbablePrime(certainty)) { q=q11.longValueExact(); trovatoq=true; } }else if(trovatop!=true && trovatoq!=false) { System.out.println("Inserisci un numero primo 'p' :"); String ps=in.next(); BigInteger p11=new BigInteger(ps); if(p11.isProbablePrime(certainty)) { p=p11.longValueExact(); trovatop=true; } }else if(trovatop!=false && trovatoq!=true) { System.out.println("Inserisci un numero primo 'q' :"); String qs=in.next(); BigInteger q11=new BigInteger(qs); if(q11.isProbablePrime(certainty)) { q=q11.longValueExact(); trovatop=true; } } } Chiave key=new Chiave(p,q); Messaggio m=new Messaggio(); n=key.getN(); e=key.CalcolaE(); d=key.CalcolaD(); System.out.println("La chiave pubblica è la coppia ("+n+","+e+")"); System.out.println("La chiave privata è la coppia ("+n+","+d+")"); System.out.println("Immetti 1 per codificare il messaggio, 2 per decodificarlo!"); int scelta=in.nextInt(); if(scelta==1) { mex=0; String s=JOptionPane.showInputDialog("Immetti il messaggio da codificare!"); for(int i=0;i<s.length();i++) { mex=s.charAt(i); valcarattere.add(mex); } for(int i=0;i<valcarattere.size();i++) { long c=m.Codifica(n, e, valcarattere.get(i)); valcodificato.add(c); } System.out.print("Messaggio codificato:"); for(int i=0;i<valcodificato.size();i++) { System.out.print((char)(valcodificato.get(i)+33)); } }else if(scelta==2) { mex=0; String s=JOptionPane.showInputDialog("Immetti il messaggio da decodificare!"); for(int i=0;i<s.length();i++) { mex=(s.charAt(i)-33); valcarattere.add(mex); } for(int i=0;i<valcarattere.size();i++) { long c=m.Codifica(n, d, valcarattere.get(i)); valcodificato.add(c); } System.out.print("Messaggio decodificato:"); for(int i=0;i<valcodificato.size();i++) { System.out.print((char)(valcodificato.get(i)+0)); } }else { JOptionPane.showMessageDialog(null,"ERRORE....HAI IMMESSO UN VALORE NON CORRETTO");} } }![]()



Rispondi quotando