How can I construct a java.security.PublicKey object from a base64 encoded string?

Code for the above answer

public static PublicKey getKey(String key){
    try{
        byte[] byteKey = Base64.decode(key.getBytes(), Base64.DEFAULT);
        X509EncodedKeySpec X509publicKey = new X509EncodedKeySpec(byteKey);
        KeyFactory kf = KeyFactory.getInstance("RSA");

        return kf.generatePublic(X509publicKey);
    }
    catch(Exception e){
        e.printStackTrace();
    }

    return null;
}

Ok for grins ... try this

  • base64 decode the key data to get a byte array (byte[])
  • Create a new X509EncodedKeySpec using the byte array
  • Get an instance of KeyFactory using KeyFactory.getInstance("RSA") assuming RSA here
  • call the method generatePublic(KeySpec) with the X509EncodedKeySpec
  • Result /should/ be a public key for your usage.

Try this....

PublicKey getPublicKey(byte[] encodedKey) throws NoSuchAlgorithmException, InvalidKeySpecException
{
    KeyFactory factory = KeyFactory.getInstance("RSA");
    X509EncodedKeySpec encodedKeySpec = new X509EncodedKeySpec(encodedKey);
    return factory.generatePublic(encodedKeySpec);
}

Tags:

Java

Security

Rsa