2012-12-27 14 views

答えて

12

使用弾む城のSubjectPublicKeyInfo、このような:

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

これはpourposeサービスを提供していません。ここでは公開鍵をRSAPublicKeyオブジェクトにキャストしただけですが、RSAPublicKey.getEncoded()と言うと、RSA形式ではなくx.509形式の鍵を取得します。 –

+0

答えを編集しました。あなたがBCを気にしないことを願っています。 – martijno

+0

ありがとう!あなたのアプローチは成功しました。私は使用した正確なスニペットを投稿しています。 –

1

次のコードスニペットは、私のために働いた、しかしはBouncyCastleを使用する必要がありました。 BouncyCastleなし

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

'getPublicKey()'は廃止された関数です。 – ruckc

+0

'new SubjectPublicKeyInfo(..)'も廃止予定です: 'SubjectPublicKeyInfo.getInstance(...)'を使用してください。 'getPublicKey()'の代わりに 'parsePublicKey()'を使います。 – Manuel

3

PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(publicKeyBinary));     
関連する問題