Zzangg  

密码算法和密码消息的ASN.1描述(openssl应用举例)

目录





1. 密码算法描述

1.1. 密码算法ASN.1的格式

  • Algorithmdentifier ::= SEQUENCE{
    • Algorithm OBJECT IDENTIFIER,
    • Parameters ANY DEFINEED BY algorithm OPTIONAL }

其中Algorithm为算法的OID,Parameters为算法的参数

1.2. 密码算法的OID

  • 常用的密码算法的OID

2. 密码消息的描述

PKCS #7和《SM2密码算法加密签名消息语法规范》中规定了各种密码消息的具体格式,这些消息可用于不同实体之间的数据交换。

2.1. 密码消息ASN.1的格式

2.1.1 通用内容消息

contentType表示内容类型或消息类型包括但不限于:

  • data
  • signedData
  • envelopedData
  • signedAndEnvelopedData
  • digestData
  • encryptedDta
  • keyAgreementInfo
    content 就是内容的值
2.1.2 data

明文数据消息

2.1.3 SignedData

数字签名消息SignedData

  • 在使用SM2算法是SignedData的ASN.1描述如下
2.1.4 SignerInfo

签名者信息格式SignerInfo(两部分截图是一起的没有缺失)


ASN.1描述的解释

2.1.5 EnvelopedData

数字信封 EnvelopedData


version缺省时值为1.recipientInfo是接受者集合,encryptedContentInfo表示已加密的内容消息。

contentType表示内容类型。contentEncryptionAlgorithm表示密码算法的标识,用于加密内容。encryptedContent表示加密后的内容

  • SM2中的encryptedContentInfo描述

  • RecipientInfo

接受者信息格式

2.1.6 signedAndEnvelopedData

2.1.7 DigestData


2.1.8 EncryptedData

2.1.9 KeyAgreementInfo

2.2 密码消息的OID

3. 基于OpenSSL对密码算法和密码消息ASN.1描述的实践

3.1. pkcs #7 格式下RSA的密文

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365生成一个自签名证书cert.pem和生成一个私钥key.pem

openssl rsa -pubout -in key.pem -out public_key.pem 派生公钥

openssl rsautl -encrypt -inkey public_key.pem -pubin -in test.bin -out encrypted.bin 使用公钥对文件加密

openssl cms -encrypt -binary -in encrypted.bin -outform DER -out test.pkcs7 -recip cert.pem 生成pkcs#7格式的密文

结果展示



参考

posted on 2023-06-08 23:37  Zzangg  阅读(595)  评论(0)    收藏  举报