Java RSA Algorithm Encryption And Decryption

Chapter: Miscellaneous Last Updated: 23-10-2016 18:29:53 UTC

Program:

            /* ............... START ............... */
                
import java.math.BigInteger;
import java.util.Random;
import java.io.*;

public class JavaRSAAlgorithm {

	private BigInteger p;
	private BigInteger q;
	private BigInteger N;
	private BigInteger phi;
	private BigInteger e;
	private BigInteger d;
	private int bitlength = 1024;
	private int blocksize = 256;

	private Random r;

	public JavaRSAAlgorithm() {

		r = new Random();
		p = BigInteger.probablePrime(bitlength, r);
		q = BigInteger.probablePrime(bitlength, r);
		N = p.multiply(q);
		phi = p.subtract(BigInteger.ONE).multiply(q.subtract(BigInteger.ONE));
		e = BigInteger.probablePrime(bitlength / 2, r);

		while (phi.gcd(e).compareTo(BigInteger.ONE) > 0 && e.compareTo(phi) < 0) {
			e.add(BigInteger.ONE);
		}

		d = e.modInverse(phi);
	}

	public JavaRSAAlgorithm(BigInteger e, BigInteger d, BigInteger N) {

		this.e = e;
		this.d = d;
		this.N = N;

	}

	public static void main(String[] args) throws IOException {

		JavaRSAAlgorithm rsa = new JavaRSAAlgorithm();
		DataInputStream in = new DataInputStream(System.in);
		String teststring;
		System.out.println("Enter the plain text:");
		teststring = in.readLine();
		System.out.println("Encrypting String: " + teststring);
		System.out.println("String in Bytes: " + bytesToString(teststring.getBytes()));

		// encrypt

		byte[] encrypted = rsa.encrypt(teststring.getBytes());
		System.out.println("Encrypted String in Bytes: " + bytesToString(encrypted));
		// decrypt
		byte[] decrypted = rsa.decrypt(encrypted);
		System.out.println("Decrypted String in Bytes: " + bytesToString(decrypted));
		System.out.println("Decrypted String: " + new String(decrypted));

	}

	private static String bytesToString(byte[] encrypted) {

		String test = "";
		for (byte b : encrypted) {
			test += Byte.toString(b);
		}

		return test;
	}

	// Encrypt message

	public byte[] encrypt(byte[] message) {
		return (new BigInteger(message)).modPow(e, N).toByteArray();
	}

	// Decrypt message

	public byte[] decrypt(byte[] message) {
		return (new BigInteger(message)).modPow(d, N).toByteArray();

	}
}
                /* ............... END ............... */
        

Tags

RSA Algorithm Encryption And Decryption, Java

Similar Programs Chapter Last Updated
Data Types In Java Miscellaneous 09-06-2018
Java Program To Find Largest Element Of Array Miscellaneous 21-09-2017
Java Program To Check Whether Number Is Prime Or Not Miscellaneous 08-09-2017
Java Program To Find Power Of Number Using For Loop Miscellaneous 29-08-2017
Java Program To Find LCM Of Two Numbers Miscellaneous 29-08-2017
Java Program To Find GCD Of Two Numbers Miscellaneous 29-08-2017
Java Program To Check Whether An Alphabet Is Vowel Or Consonant Miscellaneous 25-08-2017
Java Program To Find ASCII Value Of Character Miscellaneous 25-08-2017
Java Object HashCode Method Miscellaneous 02-08-2017
Java Builder Design Pattern Example Miscellaneous 06-06-2017
Java Factory Design Pattern Example Miscellaneous 06-06-2017
Java Program To Print ASCII Values Miscellaneous 06-04-2017
Java Program To Find HCF LCM Of Two Numbers Miscellaneous 22-09-2018
Java String Array Iteration Miscellaneous 31-03-2017
Java Array Size Miscellaneous 30-03-2017
Java Integer toString Miscellaneous 30-03-2017
Java Sort Array Using Arrays.sort() Miscellaneous 28-03-2017
Java Print Array Using Arrays.toString Miscellaneous 28-03-2017
Java Nested Interface Miscellaneous 25-03-2017
Java Static Nested Class Miscellaneous 25-03-2017
Packages In Java Miscellaneous 24-03-2017
Java Strictfp Keyword Miscellaneous 24-03-2017
Java Call By Reference Miscellaneous 23-03-2017
Java Call By Value Miscellaneous 23-03-2017
Java Unboxing Example Miscellaneous 23-03-2017
Java Autoboxing Example Miscellaneous 23-03-2017
Java Format Currency Miscellaneous 15-02-2017
Java String To BigDecimal Conversion Miscellaneous 15-02-2017
Java Program To Convert Arraylist To Array Miscellaneous 13-02-2017
Java Array Creation And Initialize Miscellaneous 13-02-2017

1 2 3 4 5