跳到主要内容
AZ Tools

ASN.1 / DER 解码器

证书有专门的阅读器,但其他以 DER 编码的东西没有:证书签名请求(CSR)、PKCS#8 密钥、PKCS#7 包、OCSP 响应、时间戳令牌。它们的内里是同一种形状——带显式长度的标签值层层嵌套——这个工具能把这种形状展示给其中任何一种。 每个节点都会报告它从哪里开始、头部多长、后面跟着多少字节内容,以及它是 constructed 还是 primitive。结构性问题正是在这里才变得可见:超出父节点的长度、最外层值之后残留的字节、本不该出现在 DER 中的不定长度——这些在字节被换成友好名称之后统统看不见,而库拒绝一个看起来正常的文件,原因往往就是它们。 primitive 是解码而不是直接倾倒:常见的对象标识符会给出名称,字符串按其标签规定的字符集解码,整数完整显示,BIT STRING 会报告填充位。若某个 OCTET STRING 里其实还装着 DER——证书扩展和密钥材料正是这样承载的——工具会标注出来,并可就地展开。不会上传任何内容;这一点在这里很重要,因为这类数据是密钥的次数不亚于是证书。

证书扩展和密钥材料会把另一个结构嵌在字符串里,此选项将其就地展开。

全部在浏览器中解码,不会发送到任何地方;不过私钥仍建议用本地工具查看。

粘贴 PEM 块、base64 或 hex 即可解码。

使用方法

  1. 粘贴 PEM 块、base64 或 hex,或拖入 .der 文件。
  2. 阅读树形结构:偏移量、头部长度、内容长度、标签和取值。
  3. 打开展开选项,即可看到藏在 OCTET 和 BIT STRING 里的 DER。
  4. 留意剩余字节提示:那说明文件中不止一个结构。
  5. 若要与其他工具的输出对照,可复制整份清单。

常见问题

它和证书解码器有什么不同?
证书解码器理解 X.509 证书的含义——主体、有效期、备用名称。这个工具只理解编码,所以 CSR、密钥、PKCS#7 包,只要是 DER 都能处理,也因此显示的是偏移量和长度而不是字段名。
每行开头的数字是什么?
该值在文件中的偏移量,随后是它的头部长度和内容长度。有了这三项,你可以在十六进制转储中定位任何节点;发现某个长度装不进父节点,靠的也是它们。
为什么某个 OCTET STRING 被标为“包含 DER”?
因为把它的内容当作 DER 解析时恰好用完,这几乎总意味着里面还嵌着另一个结构——证书扩展和密钥材料就是这样承载的。这仍是推测,所以只作标注而不当成定论,是否展开由你决定。
不定长度意味着什么?
意味着该值不声明自身大小,而是一直延续到内容结束标记为止。BER 允许这样,DER 不允许;在本该是 DER 的东西里看到它,通常就解释了严格解析器为何拒绝该文件。
可以粘贴私钥吗?
私钥同样是 DER,结构可以解析,而且不会上传。即便如此,私钥还是更适合用本地工具查看——把密钥粘进网页的习惯,早晚会导致泄露。
会验证这些值吗?
不会。这个工具读的是编码而非含义:它不校验签名、证书链或有效期,只告诉你这些字节说了什么。

相关工具