import java.util.Scanner; import java.lang.Math; class Rsa{ static Scanner scan; static int E; static int SI; static int N; static int D; public static void main(String[] args){ scan = new Scanner(System.in); System.out.println("Enter two co prime numbers"); int p = scan.nextInt(); int q = scan.nextInt(); Rsa obj = new Rsa(); obj.calculate(p,q); String message = obj.getMessage(); System.out.println("message: " + message); int intMessage = Integer.parseInt(message); System.out.println("Integer message : " + intMessage); System.out.println((Math.pow(intMessage,E))); double encRes = (Math.pow(intMessage,E)) % N; System.out.println(encRes); } void calculate(int p, int q){ scan = new Scanner(System.in); N = p * q; System.out.println("N : " + N); SI = (p-1)*(q-1); System.out.println("SI : " + SI); System.out.println("Choose a number E where: 1 < E < SI"); E = scan.nextInt(); System.out.printf("public key is : {%d , %d }\n",E,N); D = modInverse(E,SI); System.out.printf("private key is : {%d , %d }\n",D,N); } int modInverse(int E,int SI){ E = E % SI; for(int i = 1; i < SI ;i++){ if((E * i) % SI == 1){ return i; } } return 1; } String getMessage(){ System.out.println("Enter your message"); scan.nextLine(); String message = scan.nextLine(); int readMsg; String buildMsg=""; message = message.toLowerCase(); for(int i=0;i<message.length();i++){ readMsg = (message.charAt(i) - 97) % 26; buildMsg += readMsg; } return buildMsg; } }
We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy. Accept Learn more