Generate public and private key pair

package bouncyCastle.keygenerator;

import java.io.IOException;
import java.io.PrintWriter;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.util.Base64;

public class GenerateKey {
	
	public static String HEADER_LINE = "-----";
	public static String SPACE = " ";
	public static String NEW_LINE = "\n";
	
	public static String BEGIN = "BEGIN";
	public static String END = "END";
	
	public static String KEY = "KEY";
	public static String PRIVATE = "PRIVATE";
	public static String PUBLIC = "PUBLIC";
	
	public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchProviderException, IOException {
		KeyPairGenerator keyGen = null;
		keyGen = KeyPairGenerator.getInstance("DSA", "SUN");
		SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
		keyGen.initialize(1024, random);

		KeyPair pair = keyGen.generateKeyPair();
		PrivateKey priv = pair.getPrivate();
		PublicKey pub = pair.getPublic();

		byte[] pubBytes = pub.getEncoded(); //bytes form
		byte[] privBytes = priv.getEncoded(); //bytes form

		System.out.println("-----BEGIN PRIVATE KEY-----");
		System.out.println(Base64.getMimeEncoder().encodeToString(pair.getPrivate().getEncoded()));
		System.out.println("-----END PRIVATE KEY-----");
		System.out.println("-----BEGIN PUBLIC KEY-----");
		System.out.println(Base64.getMimeEncoder().encodeToString(pair.getPublic().getEncoded()));
		System.out.println("-----END PUBLIC KEY-----");

		StringBuilder privateKey = new StringBuilder();
		privateKey.append(HEADER_LINE).append(BEGIN).append(SPACE).append(PRIVATE).append(SPACE).append(KEY).append(HEADER_LINE).append(NEW_LINE);
		privateKey.append(Base64.getMimeEncoder().encodeToString(pair.getPrivate().getEncoded())).append(NEW_LINE);;
		privateKey.append(HEADER_LINE).append(END).append(SPACE).append(PRIVATE).append(SPACE).append(KEY).append(HEADER_LINE);
		
		StringBuilder publicKey = new StringBuilder();
		publicKey.append(HEADER_LINE).append(BEGIN).append(SPACE).append(PRIVATE).append(SPACE).append(KEY).append(HEADER_LINE).append(NEW_LINE);
		publicKey.append(Base64.getMimeEncoder().encodeToString(pair.getPublic().getEncoded())).append(NEW_LINE);;
		publicKey.append(HEADER_LINE).append(END).append(SPACE).append(PRIVATE).append(SPACE).append(KEY).append(HEADER_LINE);
		
		writeToFile("/home/tyson/Desktop/temp/pud.txt", publicKey.toString());
		writeToFile("/home/tyson/Desktop/temp/priv.txt", privateKey.toString());
	}
	public static void writeToFile(String path, String data) throws IOException {
		PrintWriter pw = new PrintWriter(path);
		pw.write(data);
		pw.flush();
		pw.close();
	}
}

Leave a Comment