【发布时间】:2012-12-12 17:08:01
【问题描述】:
PublicKey.getEncoded(),返回一个包含 SubjectPublicKeyInfo (x.509) 格式的公钥的字节数组,如何将其转换为 RSA 公钥编码?
【问题讨论】:
标签: java cryptography rsa pkcs#1
PublicKey.getEncoded(),返回一个包含 SubjectPublicKeyInfo (x.509) 格式的公钥的字节数组,如何将其转换为 RSA 公钥编码?
【问题讨论】:
标签: java cryptography rsa pkcs#1
使用 Bouncy Castle 的 SubjectPublicKeyInfo,如下所示:
byte[] encoded = publicKey.getEncoded();
SubjectPublicKeyInfo subjectPublicKeyInfo = SubjectPublicKeyInfo.getInstance(
ASN1Sequence.getInstance(encoded));
byte[] otherEncoded = subjectPublicKeyInfo.parsePublicKey().getEncoded();
【讨论】:
没有 BouncyCastle:
PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(publicKeyBinary));
【讨论】:
以下 sn-p 代码对我有用,但必须使用 BouncyCastle。
byte[] keyBytes = key.getEncoded(); // X.509 for public key
SubjectPublicKeyInfo subPkInfo = new SubjectPublicKeyInfo((ASN1Sequence)ASN1Object.fromByteArray(keyBytes));
byte[] rsaformat = subPkInfo.getPublicKey().getDEREncoded();
【讨论】:
getPublicKey() 现已弃用。
new SubjectPublicKeyInfo(..) 也已弃用:使用 SubjectPublicKeyInfo.getInstance(...)。而不是getPublicKey() 使用parsePublicKey()。