大家好,我正在尝试将我在 java 程序中生成的 PKCS#8 私钥转换为 PEM 编码文件。
Security.addProvider(new BouncyCastleProvider());
SecureRandom rand = new SecureRandom();
JDKKeyPairGenerator.RSA keyPairGen = new JDKKeyPairGenerator.RSA();
keyPairGen.initialize(2048, rand);
KeyPair keyPair = keyPairGen.generateKeyPair();
PEMWriter privatepemWriter = new PEMWriter(new FileWriter(new File(dir + "private.key")));
privatepemWriter.writeObject(keyPair.getPrivate());
运行程序后,我拥有两种格式的私钥和一个公钥(代码未显示为有效)。然后我使用这个 openssl 命令将 private.key 转换回 pem 格式的文件。
openssl pkcs8 -nocrypt -inform DER -in private.key -out private2.pem
当我比较 private.pem 和 private2.pem 时,它们是不同的,很明显,当我尝试使用 private.pem 时,它说它不是有效文件。
为了将此私钥正确转换为我需要的 PEM 格式,我缺少什么步骤?我不能在我的程序中使用 OpenSSL,否则我会简单地添加该函数调用。我可以在这个程序中访问 BouncyCastle 库,所以也许它有一个我忽略的解决方案。