tener una cadena que se envía desde el siguiente formato:¿Cómo podemos convertir una cadena de PEM a Der formato
-----BEGIN RSA PUBLIC KEY-----
MIGHAoGBANAahj75ZIz9nXqW2H83nGcUao4wNyYZ9Z1kiNTUYQl7ob/RBmDzs5rY
mUahXAg0qyS7+a55eU/csShf5ATGzAXv+DDPcz8HrSTcHMEFpuyYooX6PrIZ07Ma
XtsJ2J4mhlySI5uOZVRDoaFY53MPQx5gud2quDz759IN/0gnDEEVAgED
-----END RSA PUBLIC KEY-----
¿Cómo puedo construir un objeto PublicKey de esta cadena? han tratado el siguiente eliminar la cabecera y el pie de página y base 64 decodifican el buffer
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);
}
Esta falla ya sea como un formato de clave no válida o conseguirá debajo de error se está generando
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)
La clave excelentes referencias del API de openSSL PEM_write_bio_RSAPublicKey(bio, rsa);
han utilizado el enlace .Pero no hará el converstion der formato – MSSV
Tenga en cuenta que lo que está tratando de hacer no es realmente una "conversión a DER". Convertir a DER es simplemente decodificar lo que es base64 aquí y sacarlo como una secuencia de bytes. Está intentando decodificar la estructura ASN.1. – Bruno