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

如何将PEM公钥转回与原DER同ASN.1结构的DER格式?

解决方法:将X.509格式公钥转回PKCS#1格式DER

你遇到的是RSA公钥两种常见ASN.1格式的差异问题:

  • 原DER是PKCS#1格式(RSAPublicKey类型),结构直接是包含模数n和指数e的SEQUENCE
  • 转换后得到的PEM/转回的DER是X.509 SubjectPublicKeyInfo格式,外层SEQUENCE包含算法标识,内层才是PKCS#1格式的公钥内容

要转回原格式的DER,只需在OpenSSL命令中加上-RSAPublicKey_out参数,指定输出PKCS#1格式:

openssl rsa -pubin -in mypubkey -inform PEM -outform DER -RSAPublicKey_out -out originalFormatDerKey

执行完后,用asn1parse查看originalFormatDerKey,结构会和你最初的DER完全一致:

0:d=0 h1=4 l= 265 cons: SEQUENCE
4:d=1 h1=4 l= 256 prim: INTEGER: [你的模数内容]
264:d=1 h1=2 l=    3 prim: INTEGER [你的指数内容]

如果是编程实现,核心逻辑是:先解析X.509格式的公钥,提取出其中的RSAPublicKey部分,再将其序列化为DER格式即可(不同语言的OpenSSL绑定库都提供对应的API,比如C语言中的d2i_RSAPublicKey/i2d_RSAPublicKey,Python的cryptography库中可以通过public_key.public_bytes()指定Encoding.DER和PublicKeyFormat.PKCS1)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 06:46:03