//只是简单地实现了加密解密,并未实现 验证参数p,q互质,e与(p-1)(q-1)互质
import java.util.*;
public class RSA{
public static void main (String args[]){
System.out.println("请依次输入p,q,e,字母数值 ");
Scanner scan=new Scanner (System .in);
int p=scan.nextInt();
int q=scan.nextInt();
int e=scan.nextInt();
int letter=scan.nextInt();
int n=p*q;
int a=(p-1)*(q-1);
int d=0;
do {
d++;
}while(((d*e)%a)!=(1%a));
System .out.println("请选择操作");
System .out.println("1:加密 ");
System .out.println("2:解密 ");
int t=scan.nextInt();
switch (t ){
case 1:
int Me=1;
int i=0 ;
while( i<e){
Me=Me*letter;
Me=(Me%n);
i++;
}
System.out. print("明文:"+letter+" 公钥:<"+e+","+n+"> 密文:" +Me);
break;
case 2:
int Cd=1;
int j=0 ;
while( j<d){
Cd=Cd*letter;
Cd=Cd%n;
j++;
}
System.out. print("密文:"+letter+" 私钥:<"+d+","+n+"> 明文:" +Cd);
break;
}
}
}