密码算法和密码消息的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格式的密文

结果展示





浙公网安备 33010602011771号