You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java将PEM格式RSA私钥转换为DER格式

Java实现RSA私钥格式转换(等价指定OpenSSL命令效果)

转换逻辑说明

你使用的OpenSSL命令openssl pkcs8 -topk8 -inform PEM -outform DER -in secret.pem -nocrypt secret.key,核心是完成以下操作:

  • 输入为PEM编码的PKCS#1格式RSA私钥(即你持有的头尾标注-----BEGIN RSA PRIVATE KEY-----的文件内容)
  • 将私钥结构转换为标准PKCS#8格式
  • 不对私钥做加密处理,最终输出DER二进制编码的私钥文件

可直接运行的实现方案

Java原生API没有直接解析PKCS#1格式PEM私钥的能力,推荐使用加密领域常用的BouncyCastle库实现,转换结果和OpenSSL命令输出完全一致。

第一步:引入依赖

如果使用Maven管理项目,添加以下依赖即可(Gradle等其他构建工具可自行调整对应坐标):

<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcpkix-jdk15on</artifactId>
    <version>1.70</version>
</dependency>

第二步:核心转换代码

import org.bouncycastle.openssl.PEMParser;
import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
import java.io.FileReader;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.PrivateKey;
import java.security.Security;

public class RsaPkcs1ToPkcs8Converter {
    public static void main(String[] args) throws Exception {
        // 注册BouncyCastle加密提供者
        Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

        // 读取源PKCS#1 PEM私钥文件,替换为你的实际文件路径
        try (PEMParser pemParser = new PEMParser(new FileReader("secret.pem"))) {
            Object parsedKeyObj = pemParser.readObject();
            JcaPEMKeyConverter keyConverter = new JcaPEMKeyConverter().setProvider("BC");
            PrivateKey pkcs8PrivateKey = keyConverter.getPrivateKey(
                    (org.bouncycastle.asn1.pkcs.RSAPrivateKey) parsedKeyObj
            );

            // 获取PKCS#8 DER格式的私钥字节数组
            byte[] derOutputBytes = pkcs8PrivateKey.getEncoded();

            // 写入目标文件,输出结果与OpenSSL命令生成的secret.key完全一致
            Files.write(Paths.get("secret.key"), derOutputBytes);
        }
    }
}

结果校验

代码运行生成secret.key后,可将其与OpenSSL命令生成的同内容文件做哈希校验,二者MD5/SHA值完全一致即证明转换正确。

注意:如果不想引入第三方依赖,需要手动实现ASN.1结构编码逻辑来拼接PKCS#8头和PKCS#1私钥内容,代码冗余度高且容易出现兼容问题,生产环境不推荐使用。

内容的提问来源于stack exchange,提问作者Jean Khechfe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 22:51:26