p7s文件的内容

Tim*_*ing 4 digital-signature

有谁知道 p7s 文件的内容吗?

文件中至少有一个数字签名,我可以很容易地找到它,但我想捕获文件中包含用私钥加密的部分的部分 - 即数字签名的不可否认部分。

有谁知道在哪里可以找到通用文件格式的简单副本?

编辑补充:

我正在使用的文件的一般格式是:

字节偏移记录类型


0 x509 证书(或者程序是这样说的)

0版本

1 8x(信息类型)

3 1 到下一个信息的偏移量(文件长度 - 4)

52 x509 证书(嵌入式,集合成员: ROOT CA

56 x509 证书(嵌入式,集合成员: ROOT CA

(1 个偏移量)x509 证书(新,主题标识符: 电子邮件

(1 个偏移量 +4)x509 证书(嵌入,收藏成员:电子邮件

(可变)x509 证书(新的、增强的密钥用法:数字签名、不可否认性

(变化+4)x509 证书(嵌入,集合成员:数字签名,不可否认))

(可变)x509 cert(新,证书颁发机构信息:CA EMAIL

(varies+4) x509 证书(嵌入,集合成员:CA EMAIL

(可变)交叉证书对信息,未知类类型

(可变)未知类类型的证书(如果需要,用尾随零填充)

我确实知道该文件不包含消息摘要,并且不是唯一的,除非它是证书持有者的原始文件(即,不同的证书将产生不同的结果,但不同的消息都附加有相同的 p7s 文件)。

我相信当文件发送到不支持电子邮件加密/解密的系统(例如 gmail 或 yahoo)时,消息摘要会从文件中删除。这就是我对 p7s 文件缺乏明确内容的解释。

除了消息摘要可能已被删除之外,这些文件没有被损坏。它们不会以 ASN.1 格式打开。常规证书文件将以 ASN(cer 文件)打开。


我编写了一个程序,本质上是通过暴力分析文件。

我逐字节检查文件,并将这些字节复制到 try-catch 循环中 X509Certificate2 类实例化的输入中。

无论是否中止,我都会移动一个字节并再次检查。

如果检查成功,我会将生成的证书添加到集合中。

最后,我检查集合中的证书,并将十六进制和格式化的 ascii 以及文件偏移量转储到报告文件中。

我指的 p7s 文件与原始文件分离,并且显然不包含任何签名信息。当签名发送到不具备加密/解密信息能力的电子邮件地址时,这显然会被剥夺。

jar*_*riq 5

P7S 文件通常包含RFC5652中定义的 SignedData 类型的 DER 编码 CMS(加密消息语法)结构。您可以使用ASN.1 编辑器方便地检查文件的确切结构和内容。

  • 可以使用openssl查看p7s的内容。`openssl asn1parse -inform DER -in file.p7s` [有关 openssl 和 asn1parse 的更多信息](https://www.openssl.org/docs/apps/asn1parse.html) (5认同)