Please note, this is a STATIC archive of website www.tutorialspoint.com from 11 May 2019, cach3.com does not collect or store any user information, there is no "phishing" involved.
Tutorialspoint

rsajava

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;
	}

}

Advertisements
Loading...

We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy.