Comment convertir de la Chaîne d'PublicKey?

J'ai utilisé le code suivant pour convertir les clés publiques et privées pour une chaîne

KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
keyPairGen.initialize(2048);
KeyPair          keyPair    = keyPairGen.genKeyPair();
PublicKey        publicKey  = keyPair.getPublic();
PrivateKey       privateKey = keyPair.getPrivate();
String publicK = Base64.encodeBase64String(publicKey.getEncoded());
String privateK = Base64.encodeBase64String(privateKey.getEncoded());

Maintenant, je suis en train de le reconvertir en public à l'annonce de la clé privée

PublicKey publicDecoded = Base64.decodeBase64(publicK);

J'obtiens une erreur de impossible de convertir de byte[] à clé publique. J'ai donc essayé comme ceci

PublicKey publicDecoded = new SecretKeySpec(Base64.decodeBase64(publicK),"RSA");

Ce qui conduit à l'erreur comme ci-dessous

java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: Neither a public nor a private key

On dirait que je fais mal la clé de conversion ici. Toute aide serait appréciée.

double possible de Charge stockée RSA à clé publique/privée à partir du disque?
double possible de la Conversion de Chaînes de clés de chiffrement et vice versa java
Merci les gars. Maintenant, je suis en mesure de transformer avec succès revenir à PublicKey à l'aide de X509EncodedKeySpec. Je n'ai cherché avant de poster la question, mais ce que j'ai vu n'était qu'implique la plupart du temps la conversion de SecretKey mais pas de clés publique et privée.

OriginalL'auteur The Coder | 2015-02-03