JcaPEMWriter 可以生成 PKCS#8 输出吗?

Sim*_*ane 2 java bouncycastle pem pkcs#8 pkcs#1

以下代码使用JcaPEMWriterBouncyCastle 中的类以 PKCS#1 格式 ( -----BEGIN RSA PRIVATE KEY-----)输出随机生成的 RSA 私钥:

public static void main(String[] args) throws Exception {
    final KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
    kpg.initialize(2048, null);
    final KeyPair kp = kpg.generateKeyPair();
    final PrivateKey privateKey = kp.getPrivate();
    final StringWriter s = new StringWriter();
    try (JcaPEMWriter w = new JcaPEMWriter(s)) {
        w.writeObject(privateKey);
    }
    System.out.println(s);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让JcaPEMWriter输出 PKCS#8 格式 ( -----BEGIN PRIVATE KEY-----) 代替?

Jam*_*olk 5

您需要为 PEMWriter 提供一个稍微不同的对象,即JcaPKCS8Generator. 以下应该工作

try (JcaPEMWriter w = new JcaPEMWriter(s)) {
    w.writeObject(new JcaPKCS8Generator(privateKey, null));
}
Run Code Online (Sandbox Code Playgroud)