【发布时间】:2013-03-17 09:41:32
【问题描述】:
我有一个 PEM 密钥,我想用它和 bouncycastle 获得一个密钥对。我发现这段代码看起来不错,但我有一个强制转换异常。
function loadKey() {
File privateKeyFile = new File(keyPath);
PEMParser pemParser = new PEMParser(new FileReader(privateKeyFile));
PEMDecryptorProvider decProv = new JcePEMDecryptorProviderBuilder().build(password.toCharArray());
JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC");
Object object = pemParser.readObject();
KeyPair kp;
if (object instanceof PEMEncryptedKeyPair) {
Logger.info("Encrypted key - we will use provided password");
kp = converter.getKeyPair(((PEMEncryptedKeyPair) object).decryptKeyPair(decProv));
}
else {
Logger.info("Unencrypted key - no password needed");
kp = converter.getKeyPair((PEMKeyPair) object);
}
return kp;
}
它返回给我: 未加密的密钥 - 无需密码 org.bouncycastle.asn1.x509.SubjectPublicKeyInfo 无法转换为 org.bouncycastle.openssl.PEMKeyPair
我尝试了几种方法,但都没有成功。
感谢帮助我:)
【问题讨论】:
-
您确定您引用的 PEM 是私钥吗?我正在使用相同的方法,没有任何困难。
-
我不确定,我是个有钥匙的新手。我怎么会知道?
-
好吧,根据您遇到的错误 - 听起来您正在解码证书而不是私钥。
标签: java bouncycastle pem