Quand utiliser X509EncodedKeySpec vs RSAPublicKeySpec?

J'ai un certificat dans un fichier texte, son contenu ressemble:

-----BEGIN PUBLIC KEY-----
xxxx
xxxx
xxxx
-----END PUBLIC KEY-----

Je crois que c'est un pem certificat codé? Je tiens donc à le charger maintenant, je suis en train suivantes:

X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(
    readFileToByteArray("keyfile"));

mais j'obtiens une InvalidKeySpecException.

Si je charge le fichier, couper le début/fin de l'en-tête/pied de page, puis en base64 decoder les "xxxx" le contenu, je n'ai pas toutes les plaintes:

String contents = readFileToString("keyfile");
contents = contents.replace("-----BEGIN PUBLIC KEY-----", "");
contents = contents.replace("-----END PUBLIC KEY-----", "");
byte[] prepared = Base64.decode(contents);

//ok.
X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(prepared);

est-ce la bonne façon de charger le fichier de clé? Je vois aussi un RSAPublicKeySpec classe, qui, basé sur le nom, semble comme quelque chose que je serais intéressé par ici. Mais je crois que c'est seulement pour la génération des certificats, de ne pas le lire existants?

Grâce

"J'ai un certificat"... non, vous avez une clé publique, et non pas un certificat. Cependant, ce que vous faites pour obtenir une clé de l'instance est correct.

OriginalL'auteur user3203425 | 2014-06-14