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

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);}