前言
最近工作需要进行加解密,对方使用的语言是 java ,rsa 密钥的格式是 pkcs8 ,我的语言使用的则是 pkcs1. 百度上只能找到两种格式私钥的互相转化,而没有提到公钥的互相转化,我测试了一番,发现了一个奇怪的结论。
正文
测试的过程是这样的,首先我生成一个 pkcs1 格式的私钥,然后根据其生成 pkcs8 格式的私钥,那之后根据两种私钥各自生成公钥。然而,生成的公钥是一模一样的,内容和形式是完全一样的。
'''
生成pkcs1私钥:openssl genrsa -out rsa_private_key.pem 1024
pkcs1私钥转pkcs8私钥:openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
pkcs1私钥转pkcs1公钥:openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
pkcs8私钥转pkcs8公钥:openssl rsa -in rsa_private_key_8.pem -pubout -out rsa_public_key_8.pem
'''
那之后,我使用工具,用公钥加密后,分别使用 pkcs1 和 pkcs8 格式的私钥解密,均解密出了正确的结果。
结论
在私钥不使用密码的情况下,公钥的 pkcs1 和 pkcs8 格式内容应该是一模一样的。