openssl生成的私钥跟java生成的私钥不一样

来源:6-9 从java.security学习Cipher

慕标6347362

2023-02-24

使用openssl生成以下私钥,为什么跟java打印出来的私钥不一样

图片描述

图片描述

图片描述

写回答

1回答

马里布

2023-03-01

openssl 输出的是 pem格式的密钥,而这段 java 代码输出的密钥中的大数字(采用hex十六进制格式表达)。

本质上都是表达同样的东西,采用的表达方式不同而已。如果把 java RSAPrivateKey 对象中的 e p q d n 等数字按照标准格式 pem 进行封装输出,就能得到与 openssl 一样的可视格式。

可以参考下面的代码,可以输出pem格式:

PrivateKey key = __keyPair__.getPrivate();
StringWriter writer = new StringWriter();
try (JcaPEMWriter pw = new JcaPEMWriter(writer)) {
    pw.writeObject(key);
}
System.out.println(writer.toString());

其中用到的依赖是:

<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcpkix-jdk18on</artifactId>
    <version>1.71</version>
</dependency>


0
0

人人都该懂密码学,通用密码学原理与应用实战

万物互联时代,更新你的安全保障能力

249 学习 · 26 问题

查看课程