openssl之pkcs7之4 Enveloped-data内容类型的编码解码

作者在 2006-11-30 00:40:00 发布以下内容

PKCS7_ENVELOPE. envelopedopenssl中的定义如下:

typedef struct pkcs7_enveloped_st

{

ASN1_INTEGER                    *version;       /* version 0 */

STACK_OF(PKCS7_RECIP_INFO)   *recipientinfo;

PKCS7_ENC_CONTENT            *enc_data;

} PKCS7_ENVELOPE;

enveloped-data内容类型由任意类型的加密内容和加密的一个/多个接收者的内容加密密钥组成。内容的密文和加密密钥一起构成了接收者的“数字信封”。任意类型的内容能够同时为任意数量的接收者进行封装。

 

Enveloped-data的组建过程分以下几步:

1.         随机产生一个对称密钥用于加密内容。

2.         内容加密密钥用每个接收者的公钥加密。

3.         对于每一个接收者,把内容加密密钥的密文和接收者的其他信息放入recipientinfo值中。

4.         用加密密钥加密内容。

5.         将所有接收者的recipientinfo值和加了密的内容放入EnvelopedData值中

接收者用自己的私钥解开内容加密密钥,然后用该密钥解密密文内容。

调用openssl的代码如下:

     PKCS7* p7 = PKCS7_new();

   

    //设置类型为NID_pkcs7_enveloped

PKCS7_set_type(p7, NID_pkcs7_enveloped);

//DES算法,用于加密内容“

(编程)Work | 阅读 3422 次
文章评论,共1条
收从锻立(游客)
2020-11-09 15:54
1
能给个完整代码吗
游客请输入验证码