title: Getting RSA private key from PEM BASE64 Encoded private key file
body: <p>I have a private key file (PEM BASE64 encoded). I want to use it else where to decrypt some other data. Below is the java class snippet to read the private key file and decode the BASE64 encoded data in it.</p>
  <pre><code>import java.io.*;
  import java.nio.ByteBuffer;
  import java.security.*;
  import java.security.spec.PKCS8EncodedKeySpec;
  import com.ibm.crypto.fips.provider.RSAPrivateKey;
  import com.ibm.misc.BASE64Decoder;
  
  public class GetPrivateKey {
      public static RSAPrivateKey get() throws Exception {
          File privateKeyFile = new File(&quot;privatekey.key&quot;);
          byte[] encodedKey = new byte[(int) privateKeyFile.length()];
          new FileInputStream(privateKeyFile).read(encodedKey);
          ByteBuffer keyBytes = new BASE64Decoder().decodeBufferToByteBuffer(encodedKey.toString());
          PKCS8EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(keyBytes.array());
          KeyFactory kf = KeyFactory.getInstance(&quot;RSA&quot;, &quot;IBMJCEFIPS&quot;);
          RSAPrivateKey pk = (RSAPrivateKey) kf.generatePrivate(privateKeySpec);
          return pk;
      }
  
      public static void main(String[] args) throws Exception {
          PrivateKey privKey = FormatMePlease.get();
          System.out.println(privKey.toString());
      }
  
  }
  </code></pre>
  <p>I am getting the following errors</p>
  <pre><code>Exception in thread &quot;main&quot; java.security.spec.InvalidKeySpecException: Inappropriate key specification: DerInputStream.getLength(): lengthTag=127, too big.
  at com.ibm.crypto.fips.provider.RSAKeyFactory.b(Unknown Source)
  at com.ibm.crypto.fips.provider.RSAKeyFactory.engineGeneratePrivate(Unknown Source)
  at java.security.KeyFactory.generatePrivate(Unknown Source)
  at GetPrivateKey.get(GetPrivateKey.java:24)
  at GetPrivateKey.main(GetPrivateKey.java:29)
  </code></pre>
  <p>The contents of the file <code>privatekey.key</code></p>
  <pre class="lang-none prettyprint-override"><code>-----BEGIN RSA PRIVATE KEY-----
  MIIEuwIBADANBgkqhkiG9w0BAQEFAASCBKUwggShAgEAAoIBAF53wUbKmDHtvfOb8u1HPqEBFNNF
  csnOMjIcSEhAwIQMbgrOuQ+vH/YgXuuDJaURS85H8P4UTt6lYOJn+SFnXvS82E7LHJpVrWwQzbh2
  QKh13/akPe90DlNTUGEYO7rHaPLqTlld0jkLFSytwqfwqn9yrYpM1ncUOpCciK5j8t8MzO71LJoJ
  g24CFxpjIS0tBrJvKzrRNcxWSRDLmu2kNmtsh7yyJouE6XoizVmBmNVltHhFaDMmqjugMQA2CZfL
  rxiR1ep8TH8IBvPqysqZI1RIpB/e0engP4/1KLrOt+6gGS0JEDh1kG2fJObl+N4n3sCOtgaz5Uz8
  8jpwbmZ3Se8CAwEAAQKCAQAdOsSs2MbavAsIM3qo/GBehO0iqdxooMpbQvECmjZ3JTlvUqNkPPWQ
  vFdiW8PsHTvtackhdLsqnNUreKxXL5rr8vqi9qm0/0mXpGNi7gP3m/FeaVdYnfpIwgCe6lag5k6M
  yv7PG/6N8+XrWyBdwlOe96bGohvB4Jp2YFjSTM67QONQ8CdmfqokqJ8/3RyrpDvGN3iX3yzBqXGO
  jPkoJQv3I4lsYdR0nl4obHHnMSeWCQCYvJoZ7ZOliu/Dd0ksItlodG6s8r/ujkSa8VIhe0fnXTf0
  i7lqa55CAByGN4MOR0bAkJwIB7nZzQKurBPcTAYJFFvAc5hgMnWT0XW83TehAoGBALVPGnznScUw
  O50OXKI5yhxGf/XDT8g28L8Oc4bctRzI+8YfIFfLJ57uDGuojO/BpqtYmXmgORru0jYR8idEkZrx
  gf62czOiJrCWTkBCEMtrNfFHQJQCQrjfbHofp7ODnEHbHFm7zdlbfNnEBBaKXxd2rVv4UTEhgftv
  wsHcimbXAoGBAIViWrHWElMeQT0datqlThE/u51mcK4VlV7iRWXVa1/gAP85ZAu44VvvDlkpYVkF
  zSRR+lHSOzsubDMN45OBQW6UA3RPg4TCvrTOmhQUeF5XPuSdcD0R2At6pdaLwAKnOtILg13Ha6ym
  Igjv8glodvem3hWLmpHIhNBiaXtf8wqpAoGADH5a8OhvKOtd8EChGXyp9LDW+HRw9vbyN/gi9dQX
  ltgyoUBb1jDllgoJSRHgRFUvyvbb/ImR5c03JwqtiQ8siWTC9G5WGeS+jcSNt9fVmG7W1L14MbrG
  Jj8fFns/7xrOlasnlPdgA+5N+CONtI/sZY2D/KZr0drhPhZBcWJlFxkCgYAn+4SOPEo/6hjKNhA6
  vER7fSxDEVsDg+rDh3YgAWpvUdlaqBxqOyAqi600YugQZGHK2lv7vNYOdmrunuIx7BPuDqY+bjtR
  R4Mc9bVQAZbXSLXMl7j2RWwKfNhLSJbk9LX4EoVtTgLjvOUE4tAdq9fFgpqdwLwzqPTO9kECP4++
  CQKBgH6tO/xcNxG/uXUideluAn3H2KeyyznZMJ7oCvzf26/XpTAMI243OoeftiKVMgxuZ7hjwqfn
  /VHXABc4i5gchr9RzSb1hZ/IqFzq2YGmbppg5Ok2cgwalDoDBi21bRf8aDRweL62mO+7aPnCQZ58
  j5W72PB8BAr6xg0Oro25O4os
  -----END RSA PRIVATE KEY-----
  </code></pre>
  <p>Similar questions have been posted here, but those were of no help for me.
  Almost all of them suggested using Bouncycastle provider which I cannot use as I'm restricted to using a FIPS compliant provider and I'm not sure if BC provider is FIPS compliant.</p>
  <p>Help in solving this issue would be highly appreciated.
  Thanks in advance.</p>