2013-03-27 403 views
1

我有一个PEM密钥,我想获得一个KeyPair与它和bouncycastle。我发现这个代码似乎很好,但我有一个演员异常。从PEM密钥获取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; 
} 

,并返回我: 未加密的密钥 - 无需 org.bouncycastle.asn1.x509.SubjectPublicKeyInfo不能转换到org.bouncycastle.openssl.PEMKeyPair

我试了好几种方法,但我的密码没有成功。

感谢帮助我:)

+0

您确定您所引用的PEM是私钥吗?我没有任何困难地使用相同的方法。 – 2013-03-27 12:24:10

+0

我不确定,我是一个带键的新手。我怎么能知道它? – user2119056 2013-03-27 12:41:55

+1

基于你遇到的错误,听起来好像你在解密证书而不是私钥。 – 2013-03-27 13:41:02

回答

6

如果你有密码,你可能会得到这个异常的私钥。尝试删除密码:

openssl rsa -in /path/to/originalkeywithpass.key -out /path/to/newkeywithnopass.key