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