title: How do we convert a String from PEM to DER format
body: <p>Have a String being sent from in the below format:</p>
  
  <pre><code>-----BEGIN RSA PUBLIC KEY-----
  MIGHAoGBANAahj75ZIz9nXqW2H83nGcUao4wNyYZ9Z1kiNTUYQl7ob/RBmDzs5rY
  mUahXAg0qyS7+a55eU/csShf5ATGzAXv+DDPcz8HrSTcHMEFpuyYooX6PrIZ07Ma
  XtsJ2J4mhlySI5uOZVRDoaFY53MPQx5gud2quDz759IN/0gnDEEVAgED
  -----END RSA PUBLIC KEY-----
  </code></pre>
  
  <p>How do i construct a PublicKey Object from this string ?
  Have tried the below 
  Remove the header and footer and base64 decode the buffer </p>
  
  <pre><code>public static PublicKey getFromString(String keystr) throws Exception
    {
    //String S1= asciiToHex(keystr);
     byte[] keyBytes = new sun.misc.BASE64Decoder().decodeBuffer(keystr);
     X509EncodedKeySpec spec =
         new X509EncodedKeySpec(keyBytes);
       KeyFactory kf = KeyFactory.getInstance("RSA");
       return kf.generatePublic(spec);
  
    }
  </code></pre>
  
  <p>This fails either as an invalid key format or will get below error</p>
  
  <pre><code>java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException: algid parse error, not a sequence
   at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(RSAKeyFactory.java:188)
   at java.security.KeyFactory.generatePublic(KeyFactory.java:304)
   at PublicKeyReader.getFromString(PublicKeyReader.java:30)
   at Tst.main(Tst.java:36)
  </code></pre>
  
  <p>The Key is being generated thro the API of openSSL <code>PEM_write_bio_RSAPublicKey(bio, rsa);</code></p>