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