title: Convert a PKCS#8 private key to PEM in java
body: <p>Hello everyone I'm trying to convert a PKCS#8 private key that I generate in my java program to a PEM encoded file. </p>
  
  <pre><code>Security.addProvider(new BouncyCastleProvider());
  SecureRandom rand = new SecureRandom();
  JDKKeyPairGenerator.RSA keyPairGen = new JDKKeyPairGenerator.RSA();        
  keyPairGen.initialize(2048, rand);
  KeyPair keyPair = keyPairGen.generateKeyPair();
  
  PEMWriter privatepemWriter = new PEMWriter(new FileWriter(new File(dir + "private.key")));
  privatepemWriter.writeObject(keyPair.getPrivate());
  </code></pre>
  
  <p>After running the program I have the private key in both formats and a public key(the code isn't shown as it works). I then use this openssl command to conver the private.key back to a pem formated file.</p>
  
  <pre><code>openssl pkcs8 -nocrypt -inform DER -in private.key -out private2.pem
  </code></pre>
  
  <p>When I compare private.pem and private2.pem they are different and obviously when I try to use private.pem it says it's not a valid file.</p>
  
  <p>What step am I missing in order to properly convert this private key into the PEM format that I need? I can't use OpenSSL from within my program, otherwise I would simply add that function call. I have access to BouncyCastle libs in this program, so maybe it has a solution I'm overlooking.</p>