openssl之EVP系列之12---EVP_Seal系列函数介绍

原创 2003年04月10日 09:28:00
openssl之EVP系列之12---EVP_Seal系列函数介绍
    ---根据openssl doc/crypto/EVP_SealInit.pod翻译和自己的理解写成
    (作者:DragonKing, Mail: wzhah@263.net ,发布于:http://openssl.126.com 之openssl专业论坛,版本:openssl-0.9.7)
    改系列函数是相当于完成一个电子信封的功能,它产生一个随机密钥,然后使用一个公钥对改密钥进行封装,数据可以使用随机密钥进行加密。
    信封加密在进行大量数据传输的时候是必须经常要用到的,因为公开密钥算法的加解密速度很慢,但对称算法就快多了。所以一般用公开密钥算法进行加密密钥的传输,而真正进行数据加密则使用对称加密算法。
    其定义的函数如下(openssl/evp.h):
     int EVP_SealInit(EVP_CIPHER_CTX *ctx, EVP_CIPHER *type, unsigned char **ek,
     int *ekl, unsigned char *iv,EVP_PKEY **pubk, int npubk);
     int EVP_SealUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
     int *outl, unsigned char *in, int inl);
     int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out,
     int *outl);
    【EVP_SealInit】
    该函数初始化一个加密算法结构EVP_CIPHER_CTX,采用了指定的加密算法,使用一个随机密钥和初始化向量IV。事实上,该函数调用EVP_EncryptInit_ex函数两次完成了ctx结构的初始化工作。参数type是算法类型,跟签名介绍过的是一样的,为EVP_des_cbc类型的函数。随机私钥被一个或多个公钥加密,这就允许秘钥被公钥相应的私钥解密。参数ek是一个缓存序列,可以存放多个被公钥加密后的密钥的信息,所以每个缓存空间都应该足够大,比如ek[i]的缓存空间就必须为EVP_PKEY_size(pubk[i])那么大。每个被加密密钥的长度保存在数字ekl中。参数pubk是一个公钥陈列,可以包含多个公钥。函数成功执行返回npubk,失败返回0。
    因为该函数的密钥是随机产生的,随意在调用该函数之前,必须对随机数播种(seeded)。
    使用的公钥必须是RSA,因为在openssl里面这是唯一支持密钥传输的公钥算法。
    跟EVP_EncryptInit函数一样,本函数也可以分为两次调用,第一次调用的时候要将参数npubk设为0,第二调用的时候就应该将参数type设为NULL。
    【EVP_SealUpdate】
    该函数是一个宏定义函数,其实际定义如下:
    #define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e)
    由此可见,其完成的功能和使用方法跟EVP_EncryptUpdate函数是一样的。细节参看前面介绍的文章。成功执行返回1,否则返回0。
    【EVP_SealFinal】
    该函数简单调用了EVP_EncryptFinal_ex完成其功能,所以其完成的功能和使用参数也跟EVP_EncryptFinal_ex函数一样,细节请参考相关文章。唯一不一样的是,该函数还调用EVP_EncryptInit_ex(ctx,NULL,NULL,NULL,NULL)函数对ctx结构再次进行了初始化。成功返回1,否则返回0。

openssl之EVP系列之4---EVP_Encrypt系列函数详解(一)

openssl之EVP系列之4---EVP_Encrypt系列函数详解(一)    ---根据openssl doc/crypto/EVP_EncryptInit.pod和doc/ssleay.txt...
  • gdwzh
  • gdwzh
  • 2003年02月21日 09:09
  • 13700

Openssl之PEM系列

1.PEM编码文件结构介绍  PEM全称是Privacy Enhanced Mail,该标准定义了加密一个准备要发送邮件的标准,主要用来将各种对象保存成PEM格式,并将PEM格式的各种对象读取到相应...
  • tanyjin
  • tanyjin
  • 2017年03月13日 10:36
  • 550

openssl之EVP系列之13---EVP_Open系列函数介绍

openssl之EVP系列之13---EVP_Open系列函数介绍    ---根据openssl doc/crypto/EVP_OpenInit.pod翻译和自己的理解写成    (作者:Drago...
  • gdwzh
  • gdwzh
  • 2003年04月22日 08:57
  • 4039

数学之美系列完整版(最新全集列表)

数学之美系列完整版(最新全集列表)作者:吴军, Google 研究员 来源:Google黑板报 数学之美 一 统计语言模型 数学之美 二 谈谈中文分词 数学之美 三 隐含马尔可夫模型...
  • happylife1527
  • happylife1527
  • 2012年10月23日 09:15
  • 911

hdu 2045 不容易系列之(3)―― LELE的RPG难题

是一道递推找规律的题,首先易知f(1)=3;f(2)=6;f(3)=6;f(4)=18; 现在考虑n>3的情况,若第n-1个格子和第一个格子不同,则为f(n-1); 若第n-1个格子和第1个格子相...
  • u013008291
  • u013008291
  • 2014年10月14日 22:07
  • 1157

openssl之EVP系列之10---EVP_Sign系列函数介绍

openssl之EVP系列之10---EVP_Sign系列函数介绍    ---根据openssl doc/crypto/EVP_SignInit.pod翻译    (作者:DragonKing, M...
  • gdwzh
  • gdwzh
  • 2003年03月24日 12:12
  • 6003

openssl之EVP系列之11---EVP_Verify系列函数介绍

openssl之EVP系列之11---EVP_Verify系列函数介绍    ---根据openssl doc/crypto/EVP_VerifyInit.pod翻译和自己的理解写成    (作者:D...
  • gdwzh
  • gdwzh
  • 2003年04月03日 08:53
  • 5654

HDU 不容易系列之(4)——考新郎(组合错排)

题目:http://acm.hdu.edu.cn/showproblem.php?pid=2049 思想基础:全部元素错排参见http://blog.csdn.net/liuweiyuxiang/a...
  • liuweiyuxiang
  • liuweiyuxiang
  • 2016年04月03日 23:43
  • 678

OpenSSL之EVP(二)——EVP系列函数介绍

EVP系列函数摘要函数典型的摘要函数主要有: 1) EVP_md5 返回 md5 的 EVP_MD。 2) EVP_sha1 返回 sha1 的 EVP_MD。 3) EVP_sha256 ...
  • scuyxi
  • scuyxi
  • 2017年03月06日 23:45
  • 384

Openssl之BIO系列

1.BIO-抽象的IO接口 其实包含了很多种接口,用通用的函数接口,主要控制在BIO_METHOD中的不同实现函数控制,我初步估计了一下,大概有14种,包括4种filter型和10种source...
  • i7thTool
  • i7thTool
  • 2016年03月03日 10:30
  • 2453
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:openssl之EVP系列之12---EVP_Seal系列函数介绍
举报原因:
原因补充:

(最多只允许输入30个字)