【发布时间】:2019-06-24 16:35:46
【问题描述】:
由于未知的 KeySpec 类型:java.security.spec.X509EncodedKeySpec,我无法使用 bouncycastle 生成私钥。 (但是,对公钥执行相同操作不会引发异常并且有效 - 为什么?)
java.security.spec.InvalidKeySpecException:未知的 KeySpec 类型: java.security.spec.X509EncodedKeySpec 在 org.bouncycastle.jcajce.provider.asymmetric.rsa.KeyFactorySpi.engineGeneratePrivate(未知 来源)在 java.security.KeyFactory.generatePrivate(KeyFactory.java:366)
PemReader pemReader = new PemReader(new InputStreamReader(new FileInputStream("private_unencrypted.pem")));
PemObject pemObject = pemReader.readPemObject();
pemReader.close();
KeyFactory keyFactory = KeyFactory.getInstance("RSA", "BC");
byte[] privateKeyBytes = pemObject.getContent();
X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(privateKeyBytes);
PrivateKey privateKey = keyFactory.generatePrivate(x509KeySpec);
【问题讨论】:
-
发布您的密钥文件内容。
-
此外,我假设您应该使用
PKCS8EncodedKeySpec作为 rsa 私钥,除非它是 PKCS1 编码的。 -
@michalk 是的,使用 PKCS8EncodedKeySpec 代替了它。谢谢!
标签: java bouncycastle