2012-12-27 8 views

Odpowiedz

12

Zastosowanie nadmuchiwany zamek na SubjectPublicKeyInfo, tak:

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

nie służą Cele wprowadzanych. tutaj właśnie wrzuciliśmy klucz publiczny do obiektu RSAPublicKey, ale kiedy mówię RSAPublicKey.getEncoded(), nadal otrzymuję klucz w formacie x.509, a nie w formacie RSA. –

+0

Edytowano odpowiedź. Mam nadzieję, że nie masz nic przeciwko używaniu BC. – martijno

+0

Wielkie dzięki! Twoje podejście zadziałało. Zamieszczam dokładny fragment, którego użyłem. –

1

Poniższy fragment kodu pracował dla mnie, musiałem użyć BouncyCastle chociaż.

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

'getPublicKey()' jest teraz przestarzałą funkcją. – ruckc

+0

'new SubjectPublicKeyInfo (..)' jest również przestarzałe: Użyj 'SubjectPublicKeyInfo.getInstance (...)'. Zamiast 'getPublicKey()' użyj 'parsePublicKey()'. – Manuel

3

Bez BouncyCastle:

PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(publicKeyBinary));     
Powiązane problemy