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系列之12---EVP_Seal系列函数介绍的更多相关文章

  1. JavaWeb网上图书商城完整项目--12.项目所需jquery函数介绍之ajax

    jquery中使用ajax发送异步请求 下面的一个案例在input输入框失去焦点的时候发送一个异步的请求: 我们来看程序的案例: 这里要强调的是返回值最好选择是json,json对应的就是对象,Jav ...

  2. 9.12 翻译系列:数据注解特性之ConcurrencyCheck【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/code-first/concurrencycheck-dataannotations-attribute-i ...

  3. 12.翻译系列:EF 6 中配置一对多的关系【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/code-first/configure-one-to-many-relationship-in-code-f ...

  4. openssl之EVP系列之1---算法封装

    openssl之EVP系列之1---算法封装     ---依据openssl doc/crypto/EVP.pod翻译和自己的理解写成     (作者:DragonKing, Mail: wzhah ...

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

    openssl之EVP系列之13---EVP_Open系列函数介绍     ---依据openssl doc/crypto/EVP_OpenInit.pod翻译和自己的理解写成     (作者:Dra ...

  6. openssl之EVP系列之6---EVP_Encrypt系列函数编程架构及样例

    openssl之EVP系列之6---EVP_Encrypt系列函数编程架构及样例     ---依据openssl doc/crypto/EVP_EncryptInit.pod和doc/ssleay. ...

  7. openssl之EVP系列之9---EVP_Digest系列函数的一个样例

    openssl之EVP系列之9---EVP_Digest系列函数的一个样例     ---依据openssl doc/crypto/EVP_DigestInit.pod翻译     (作者:Drago ...

  8. openssl之EVP系列之8---EVP_Digest系列函数具体解释

    openssl之EVP系列之8---EVP_Digest系列函数具体解释     ---依据openssl doc/crypto/EVP_DigestInit.pod翻译和自己的理解写成     (作 ...

  9. openssl之EVP系列之7---信息摘要算法结构概述

    openssl之EVP系列之7---信息摘要算法结构概述     ---依据openssl doc/crypto/EVP_DigestInit.pod翻译和自己的理解写成     (作者:Dragon ...

随机推荐

  1. python(或BAT脚本)自动执行adb shell以后的命令

    最近在用python做一个小工具,自动执行一些adb shell命令,使用subprocess.Popen来实现.   不过遇到个问题就是执行adb shell后就无法执行后面adb shell里的命 ...

  2. Python-S9-Day101 Vue-cli

    01 昨天内容回顾 02 音乐播放器计算属性方法和组件创建 03 Vue-cli项目生成 04 模板中组件的使用 01 昨天内容回顾 1.1 {{xxx}}模板语法,插值,简单的运算: 1.2 指令系 ...

  3. jsonp的原理及应用

    https://blog.csdn.net/u011897301/article/details/52679486

  4. CSU-1163 寒衣调

    CSU-1163 寒衣调 Description 男从戎,女守家.一夜,狼烟四起,男战死沙场.从此一道黄泉,两地离别.最后,女终于在等待中老去逝去.逝去的最后是换尽一生等到的相逢和团圆. 某日两人至奈 ...

  5. uploadify 报http 302错误

    uploadify 报http 302错误 原因是系统采用Forms认证,服务端加入匿名认证即可 具体配置如下: <location path="Base/Base/Upload&qu ...

  6. maven学习(七)——使用maven构建java项目

    构建Jave项目 1.使用mvn archetype:generate命令,如下所示: mvn archetype:generate -DgroupId=com.mycompany.app -Dart ...

  7. ALPHA(五)

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...

  8. BZOJ 2818: Gcd(欧拉函数)

    GCDDescription 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. Input 一个整数N Output 如题 Sample Input 4 ...

  9. 关于ContextImp的源码分析

      关于ContextImp的源码分析 来源: http://blog.csdn.net/qinjuning/article/details/7310620 Context概述:   Android ...

  10. wooyun

    转自:http://zone.wooyun.org/content/19128 tencent.com baidu.com sina.com.cn sohu.com discuz.net rising ...