大家好,我正在尝试将我在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库,因此可能有一个解决方案我正在忽略。