我有以下代码:
PEMParser pemParser;
File telexuskeys = new File(locationKey);
if(telexuskeys.exists())
pemParser = new PEMParser(new FileReader(telexuskeys));
else{
usage(ops);
throw new FileNotFoundException("The key file (company's certificate) doesn't exist!");
}
System.out.println("Loading company's certificate");
Object object = pemParser.readObject();
Object object2 = pemParser.readObject();
PEMDecryptorProvider decProv = new JcePEMDecryptorProviderBuilder().build(passwordPem.toCharArray());
JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC");
byte[] keyBytes = PrivateKeyInfo.getInstance(object2).getEncoded();
PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory kf = KeyFactory.getInstance("RSA", "BC");
PrivateKey pk = kf.generatePrivate(spec);
我的 pem 文件只有证书和私钥。我曾经能够读取文件并获得私钥,但现在文件受到密码保护(加密)。我仍然缺少什么指令。我知道我需要使用 PEMDecryptorProvider 和 JcaPEMKeyConverter 对象才能获得它,但我没有找到正确的组合。