/* CREATED BY KEVIN PECHIN ON 01/02/2008 * PURPOSE: THIS WILL GENERATE PUBLIC/PRIVATE KEYS IN RSA FORMAT AND PERFORM A TEST ON THE KEYS */ import java.security.*; import javax.crypto.Cipher; import java.io.FileOutputStream; public class kGenerateRSAKeys { public static void main(String[] args) throws Exception { try { Cipher rsa; KeyPair Kpair; // CREATE A KEYFACTORY OBJECT AND SET IT TO RSA KeyFactory factory = KeyFactory.getInstance("RSA"); // GENERATE A KEYPAIR USING RSA KeyPairGenerator KpairGen = KeyPairGenerator.getInstance("RSA"); KpairGen.initialize(1024, new SecureRandom()); Kpair = KpairGen.generateKeyPair(); // INITIALIZE FOR RSA CIPHER ENCRYPTION AND DECRYPTION rsa = Cipher.getInstance("RSA"); // TEST ENCRYPTION rsa.init(Cipher.ENCRYPT_MODE, Kpair.getPublic()); byte[] encryptedItem = rsa.doFinal("If you see this it is working".getBytes()); // TEST DECRYPTION rsa.init(Cipher.DECRYPT_MODE, Kpair.getPrivate()); byte[] decryptedItem = rsa.doFinal(encryptedItem); String recovered = new String(decryptedItem); System.out.println("Decrypted Item: " + recovered); // SAVE PUBLIC/PRIVATE KEYS byte[] encodedKeySpec = Kpair.getPrivate().getEncoded(); FileOutputStream eksos = new FileOutputStream("private_RSA.key"); eksos.write(encodedKeySpec); eksos.close(); byte[] encodedKeySpec1 = Kpair.getPublic().getEncoded(); FileOutputStream eksos1 = new FileOutputStream("public_RSA.key"); eksos1.write(encodedKeySpec1); eksos1.close(); } catch (Exception e) { System.out.println(e.toString()); } } }