Criptografia RSA - Execução erro

1 resposta
rodrigoerocha

E ae galera,

Estou com problemas num programa de criptografia RSA que desenvolvi.

Ele apresenta um erro... alguem pode ajudar ?

import java.util.Scanner;


public class ExecutarRsa {
	public static void main(String[] args) {
		RSA NovoRsa = new RSA();
		int menu;
		long valor;
		Scanner leitura = new Scanner(System.in);
		do {
			System.out.println("O QUE VOCE DESEJA");
			System.out.println();
			System.out.println("1 - GERAR CHAVES");
			System.out.println("2 - CRIPTOGRAFAR");
			System.out.println("3 - DESCRIPTOGRAFAR");
			System.out.println("4 - SAIR");
			menu = leitura.nextInt();
			
			switch (menu){
				case 1: {
					long cp = NovoRsa.GerarChaves();
					System.out.println(cp);
					break;
				}
				case 2: {
					
					System.out.println("QUAL VALOR VOCE DESEJA CRIPTOGRAFAR");
					valor = leitura.nextInt();
					long crip = NovoRsa.criptografia(valor);
					System.out.println(crip);
					
					break;
				}
				case 3: {
					System.out.println("QUAL VALOR VOCE DESEJA DESCRIPTOGRAFAR");
					valor = leitura.nextInt();
					long desc = NovoRsa.descriptografar(valor);
					System.out.println(desc);
					break;
				}
				case 4: {
					valor = 4;
					break;
				}
				default: {
					System.out.println("Opcao invalida");
				}
			}	
		} while(menu != 4);
	}
}

CLASS

public class RSA {

	public long p;
	public long q;
	public long n;
	public long z;
	public long d;
	public long e;

	public long GerarChaves() {

		p = (long) (Math.random()* 100); 
		q = (long) (Math.random()* 100);
		
		while (TestaPrimo(p)== false){
			p = (long) (Math.random()* 100); 
		}
		while (TestaPrimo(q)== false){
			q = (long) (Math.random()* 100); 
		}
		n = p * q;
		z = (p - 1) * (q -1);

		long divisor;
		
		do {
			d = (long) (Math.random()* 100);
			divisor = mdc(z,d);		
		} while(divisor != 1);
			
		do {
			e = (long) (Math.random()* 100);
		} while ((e * d) % z !=1);
		return d;
	}
	
	public boolean TestaPrimo(long p2){
		int cont = 0;
		boolean  sim;
		
		for(int i = 1; i < p2; i++){
			if ((p2 % i) == 0){
				cont++;
			}
		}
		if (cont ==1 || cont == 2){
			sim = true;
		} else{
			sim = false;
		}
		return sim;
	}
	
	public long mdc(long a, long b){
		if (b == 0)
			return a;
		else
			return mdc (b ,a % b);
		
	}
	public long criptografia(long valor){
		long TextoOriginal;
		TextoOriginal = (long)Math.pow(valor, d) % n;
		return TextoOriginal;
	}
	public long descriptografar(long valor2){
		long descripTesto;
		descripTesto = (long)Math.pow(valor2,e ) % n;
		return descripTesto;
	}
	
	

}

AGRADEÇO A AJUDA

1 Resposta

Javabuntu

se mal lhe pergunte, qual erro? :roll:

Criado 21 de novembro de 2008
Ultima resposta 21 de nov. de 2008
Respostas 1
Participantes 2