Converting A public key in SubjectPublicKeyInfo format to RSAPublicKey format java

后端 未结 3 457
北恋
北恋 2020-12-14 23:17

The PublicKey.getEncoded(), returns a byte array containing the public key in SubjectPublicKeyInfo (x.509) format, how do i convert it to RSA public key encoding?

相关标签:
3条回答
  • 2020-12-14 23:44

    Without BouncyCastle:

    PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(publicKeyBinary));                
    
    0 讨论(0)
  • 2020-12-14 23:55

    The following snippet of code worked for me, had to use BouncyCastle though.

    byte[] keyBytes = key.getEncoded(); // X.509 for public key
    SubjectPublicKeyInfo subPkInfo = new SubjectPublicKeyInfo((ASN1Sequence)ASN1Object.fromByteArray(keyBytes));
    byte[] rsaformat = subPkInfo.getPublicKey().getDEREncoded();
    
    0 讨论(0)
  • 2020-12-15 00:04

    Use Bouncy Castle's SubjectPublicKeyInfo, like this:

    byte[] encoded = publicKey.getEncoded();
    SubjectPublicKeyInfo subjectPublicKeyInfo = new SubjectPublicKeyInfo(
        ASN1Sequence.getInstance(encoded));
    byte[] otherEncoded = subjectPublicKeyInfo.parsePublicKey().getEncoded();
    
    0 讨论(0)
提交回复
热议问题