openssl-从PEM到DER的RSA公钥
我在使用openssl转换RSA pub密钥时遇到了一个问题,我想获得DER格式的公钥。以下是我所做的:openssl-从PEM到DER的RSA公钥,openssl,cryptography,Openssl,Cryptography,我在使用openssl转换RSA pub密钥时遇到了一个问题,我想获得DER格式的公钥。以下是我所做的: 生成RSA密钥对 openssl genrsa-out alice.key 1024 仅从my.key导出公钥 a) openssl rsa-in alice.pem-RSAPublicKey\u out-out alice\u pub.pem b) openssl rsa-in alice.pem-pubout-out alice_pub2.pem 这两种方法在.pem中生成不同的页脚:第
--开始RSA公钥--
,第二次输出
--开始公钥--
openssl asn1 parse-通知pem-发生了意外情况。
对于alice_pub.pem来说,它工作得很好;对于alice_pub2.pem,openssl无法提取“N”和“E”参数,表明它们已被“rsa加密”
请告诉我如何解决这个问题。非常感谢。这个问题可以很容易地重现。当您说OpenSSL只能将第二个PEM转换为DER时,不清楚您的意思是什么-
OpenSSL asn1parse
可以读取这两个PEM并将其作为DER输出
-RSAPublicKey\u out
的输出只是公钥,没有额外的包装,当通过openssl asn1parse
时,您会得到以下结果:
0:d=0 hl=3 l= 137 cons: SEQUENCE
3:d=1 hl=3 l= 129 prim: INTEGER :...
135:d=1 hl=2 l= 3 prim: INTEGER :010001
0:d=0 hl=3 l= 137 cons: SEQUENCE
3:d=1 hl=3 l= 129 prim: INTEGER :...
135:d=1 hl=2 l= 3 prim: INTEGER :010001
但是,-pubout
生成的输出是X509格式的公钥,当通过openssl asn1parse
输入时,您会得到以下输出:
0:d=0 hl=3 l= 159 cons: SEQUENCE
3:d=1 hl=2 l= 13 cons: SEQUENCE
5:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption
16:d=2 hl=2 l= 0 prim: NULL
18:d=1 hl=3 l= 141 prim: BIT STRING
此格式将公钥(未编码显示为位字符串
)包装为RSA公钥(RSA加密
)
您可以使用openssl asn1parse
的-strparse
选项,在-pubout
输出中显示编码公钥的详细信息。在上述输出中,您可以看到位字符串
位于偏移量18处,因此使用:
openssl asn1parse -inform PEM -in alice_pub2.pem -strparse 18
您将得到如下结果:
0:d=0 hl=3 l= 137 cons: SEQUENCE
3:d=1 hl=3 l= 129 prim: INTEGER :...
135:d=1 hl=2 l= 3 prim: INTEGER :010001
0:d=0 hl=3 l= 137 cons: SEQUENCE
3:d=1 hl=3 l= 129 prim: INTEGER :...
135:d=1 hl=2 l= 3 prim: INTEGER :010001
换句话说,与原始RSA公钥完全相同的数据由
-RSAPublicKey\u out
选项为openssl RSA
生成,这非常有用。