Conversion d’une clé publique au format SubjectPublicKeyInfo au format RSAPublicKey java

PublicKey.getEncoded () renvoie un tableau d’octets contenant la clé publique au format SubjectPublicKeyInfo (x.509). Comment puis-je le convertir en codage de clé publique RSA?

Utilisez SubjectPublicKeyInfo Bouncy Castle, comme ceci:

 byte[] encoded = publicKey.getEncoded(); SubjectPublicKeyInfo subjectPublicKeyInfo = new SubjectPublicKeyInfo( ASN1Sequence.getInstance(encoded)); byte[] otherEncoded = subjectPublicKeyInfo.parsePublicKey().getEncoded(); 

Sans BouncyCastle:

 PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(publicKeyBinary)); 

L’extrait de code suivant a fonctionné pour moi, cependant, je devais utiliser BouncyCastle.

 byte[] keyBytes = key.getEncoded(); // X.509 for public key SubjectPublicKeyInfo subPkInfo = new SubjectPublicKeyInfo((ASN1Sequence)ASN1Object.fromByteArray(keyBytes)); byte[] rsaformat = subPkInfo.getPublicKey().getDEREncoded();