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