使用BouncyCastle从PEM Key获取KeyPair

use*_*056 2 java bouncycastle pem

我有一个PEM Key,我希望得到一个KeyPair和它和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;
}
Run Code Online (Sandbox Code Playgroud)

它返回我:未加密密钥 - 无需密码org.bouncycastle.asn1.x509.SubjectPublicKeyInfo无法强制转换为org.bouncycastle.openssl.PEMKeyPair

我尝试了几种方法,但我没有成功.

谢谢你的帮助:)

Sar*_*ang 5

如果您有一个带密码的私钥,您可能会遇到此异常.尝试删除密码:

openssl rsa -in /path/to/originalkeywithpass.key -out /path/to/newkeywithnopass.key
Run Code Online (Sandbox Code Playgroud)