OpenSSL签名和验证(1)

上传人:仙*** 文档编号:244592970 上传时间:2024-10-05 格式:PPT 页数:12 大小:128KB
返回 下载 相关 举报
OpenSSL签名和验证(1)_第1页
第1页 / 共12页
OpenSSL签名和验证(1)_第2页
第2页 / 共12页
OpenSSL签名和验证(1)_第3页
第3页 / 共12页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第,5,章,OpenSSL,签名和验证,概述,5.1,函数介绍,5.2,实例应用,小结,概述,OpenSSL,中的签名,是先对原始数据计算摘要,然后对摘要使用私钥加密即签名。,验证签名时,先对原始数据计算摘要,并对收到的签名使用公钥解密,然后对比二者结果,如果一致,则说明签名有效,否则,则认为签名无效(可能原因:原始数据或签名值被篡改)。,OpenSSL,在,Evp.h,中对签名和验证函数进行了封装。对数据签名,其实就是对数据的摘要进行私钥加密。验证签名就是解密签名数据,然后和原始摘要对比,看是否一致。,数字签名结合数字证书可以实现身份认证、防篡改、防抵赖的功能。签名的数据格式为,PKCS#1,。,概述,5.1,函数介绍,根据上面介绍可知,,OpenSSL,在,使用私钥加密前的处理过程就是生成消息摘要的过程,因此函数实质一样,此处即摘要函数的宏定义,验证前同理。,各个函数介绍如下:,1,、 签名初始化函数,#define,EVP_SignInit_ex,EVP_DigestInit_ex,int,EVP_DigestInit_ex(EVP_MD_CTX,*,ctx, const EVP_MD *type,ENGINE *,impl,);,2,、,签名更新函数,#define,EVP_SignUpdate,EVP_DigestUpdate,int,EVP_DigestUpdate(EVP_MD_CTX,*,ctx,const,void *d,size_t,cnt,);,3,、,签名结束函数,int,EVP_SignFinal(EVP_MD_CTX,*,ctx, unsigned char*,md, unsigned,int,*s, EVP_PKEY *,pkey,);,功能:计算签名结束, 输出签名值。参数说明:,ctx,:,IN,上下文变量,md,:,OUT,签名结果输出值的指针,s,:,OUT,签名的长度,pkey,:,IN,签名的私钥。,4,、,验证初始化函数,-,设置摘要算法和摘要算法引擎,#define,EVP_VerifyInit_ex,EVP_DigestInit_ex,int,EVP_DigestInit_ex(EVP_MD_CTX,*,ctx, const EVP_MD *type,ENGINE *,impl,);,5.1,函数介绍,5,、,验证更新函数,#define,EVP_VerifyUpdate,EVP_DigestUpdate,int,EVP_DigestUpdate(EVP_MD_CTX,*,ctx,const,void *d,size_t,cnt,);,6,、,验证结束函数,int,EVP_VerifyFinal,(EVP_MD_CTX *,ctx, const unsigned char *,sigbuf, unsigned,int,siglen, EVP_PKEY *,pkey,);,功能:计算验证结束, 提示输出验证值。参数说明:,ctx,:,IN,上下文变量,sigbuf,:,IN,签名值,siglen,:,IN,签名的长度,pkey,:,IN,验证签名的公钥。,5.1,函数介绍,1.,RSA,基本结构,struct,int,pad;,long version;,const RSA_METHOD *,meth,;,ENGINE *engine;,BIGNUM *n; n=p*q,BIGNUM *e;,公开的加密指数,经常为,65537,(,ox10001,),BIGNUM *d;,私钥,BIGNUM *p;,大素数,p,BIGNUM *q;,大素数,q,BIGNUM *dmp1; d mod (p-1),BIGNUM *dmq1; d mod (q-1),BIGNUM *,iqmp,; (inverse of q) mod p,int,references;,int,flags;,/ .,RSA,;,5.1,函数介绍,(,补充,),2,初始化函数,RSA * RSA_new(void);,初始化一个,RSA,结构,void RSA_free(RSA *,rsa,);,释放一个,RSA,结构,3,RSA,私钥产生函数,RSA *,RSA_generate_key(int,num, unsigned long e,void (*,callback)(int,int,void,*), void *,cb_arg,);,产生一个模为,num,位的密钥对,,e,为公开的加密指数,一般为,65537,(,ox10001,),,假如后两个参数不为,NULL,,,将有些调用。在产生密钥对之前,一般需要指定随机数种子,5.1,函数介绍,(,补充,),5.2,实例应用,了解了签名和验证的主要函数后,下面通过一个实例来说明这些函数的用法。签名和验证能够完成消息的防篡改、签名者身份认证和防抵赖。,本例通过,RSA,算法,对一段数据进行数字签名并利用公钥进行验证。,5.2,实例应用,初始化摘要算法结构体,签名初始化,,设置摘要算法、密码算法引擎,循环调用签名(摘要),update,,,直到处理完所有的数据,调用摘要结束函数,输出,最后的摘要值,结束,开始,加载或读取私钥,数据签名流程图,:,5.2,实例应用,验证签名流程图,:,结束,初始化摘要算法结构体,验证初始化,,设置摘要算法、密码算法引擎,调用签名结束函数,输出,签名值,开始,加载或读取私钥(一般从证,书中读取公钥),循环调用验证(摘要),update,,,直到处理完所有的数据,理解并掌握签名和验证签名的基本原理。,理解并掌握,openssl,签名和验证签名的常用函数。,小结,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!