Bootstrap

PKCS#7签名介绍与代码实现

文章介绍

  • 本文章主要介绍了PKCS#7签名、PKCS#7签名数据的结构、PKCS#7 Attach 和 Deatch的区别。并通过OpenSSL,用C代码实现了PKCS#7签名和验签,对签名数据进行了分析。

PKCS#7介绍

  • PKCS(Public Key Cryptograhy Standards),即公钥加密标准。PKCS的主要主要目的是把PKI(公钥基础设施)标准化。标准包括许多方面,如格式、算法与API。
  • PKCS#7是加密消息语法规范(Cryptographic Message Syntax Standard)。指定加密操作结果的数据格式/语法,例如数字签名和数字信封。
  • PKCS#7签名相对于普通数据签名,内容中包含了很多额外信息,如摘要信息,证书信息等内容。广泛应用于确保数据完整性和数据来源真实性的场景。

PKCS#7数据签名

  • PKCS#7数据签名的ASN.1编码简化版格式如下
    •   SignedData ::= SEQUENCE {
             
            version CMSVersion,            // 语法的版本号,INTEGER 类型
            digestAlgo
;