网站大量收购独家精品文档,联系QQ:2885784924

第九章oPEnSSl签名与验证.ppt

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章 openssl签名和验证 Openssl 在evp.h中对签名和验证函数进行了封装。对数据签名,实际就是对数据的摘要进行私钥加密。验证签名就是解密签名数据,和原始的摘要是否一样。 Openssl中签名,是先对原始数据计算摘要,再对摘要进行私钥加密。验证的过程是对原始消息计算摘要,解密签名值,和摘要对比是否一致。如果一致,说明签名有效;否则,则认为原名或签名值被篡改。数据签名结合数字证书可以实现身份认证、防篡改、防抵赖的功能。 签名的数据格式为PKCS#1. 9.1 概述 Openssl处理签名的函数主要有EVP_SignInit_ex、EVP_SignUpdate和EVP_SignFinal。签证签名函数主要有EVP_VerifyInit_ex、EVP_VerifyUpdate和EVP_VerifyFinal。 其中EVP_SignInit_ex、 EVP_VerifyInit_ex、是摘要函数EVP_DigestInit_ex的宏定义, EVP_SignUpdate和EVP_VerifyUpdate是摘要函数EVP_DigestUpdate的宏定义。 9.2 函数介绍 常用的函数有6个: EVP_SignInit_ex EVP_SignUpdate EVP_SignFinal EVP_VerifyInit_ex EVP_VerifyUpdate EVP_VerifyFinal 9.2.1签名初始化函数EVP_SignInit_ex 9.2.2签名函数EVP_SignUpdate 函数功能: 签名update,计算数据摘要。此函数可以被调用 多次,适用于大段数据的摘要计算。 函数定义: #define EVP_SignUpdate_ex(a,b,c) EVP_DigestUpdate (a,b,c) int EVP_DigestUpdate (EVP_MD_CTX,const void *d, size_t cnt); 参数说明: Ctx:[in] EVP_MD_CTX结构体,用来保存计算摘要时的上下文环境,如设置的摘要算法、当前已经计算的状态等。 d:待计算摘要的数据。 cnt:计算摘要的数据长度。 返回值:如果调用成功返回1,否则返回0 9.2.3签名结束函数EVP_SignFinal 函数功能:计算签名结束,输出签名值。 函数定义: Int EVP_SignFinal (EVP_MD_CTX *ctx,unsigned char *md,unsigned int *s,EVP_PKEY*pkey); 参数说明: Ctx:[in] EVP_MD_CTX结构体,用来保存计算摘要时的上下文环境,如设置的摘要算法、当前已经计算的状态等。 md:签名结果输出值的指针。 s:[out] size_t 类型数据,签名的长度。 Pkey:签名的私钥。 返回值:调用成功返回1,否则返回0. 9.2.4验证初始化函数EVP_VerifyInit_ex 函数功能:验证签名初始化,设置摘要算法、摘要算法引擎。 函数定义: #define EVP_VerifyInit_ex (a,b,c) EVP_DigestInit_ex(a,b,c) int EVP_DigestInit_ex(EVP_MD_CTX,const EVP_MD *type,ENGINE *impl); 参数说明: Ctx:[in] EVP_MD_CTX结构体,表示上下文变量。 type:表示摘要使用的算法。 impl:表示摘要算法使用引擎。 返回值:成功为1,否则为0. 9.2.5 验证函数EVP_VerifyUpdate 函数功能:计算数据摘要。 函数定义: 该函数是宏定义函数,其实和消息摘要的函数是一样的。 #define EVP_VerifyUpdate (a,b,c) EVP_DigestUpdate (a,b,c) Int EVP_DigestUpdate (EVP_MD_CTX*ctx,const void *d,size_t cnt) ; 参数说明: ctx:[in] EVP_MD_CTX结构体,表示上下文变量。 d: [in]待计算摘要的数据。 cnt: [in] size_t 类型数据,表示计算摘要的数据长度。 9.2.6 验证结束函数EVP_VerifyFinal 函数功能:验证签名结束,返回签名结果。 函数定义: Int EVP_VerifyFinal (EVP_MD_CTX*ctx,const unsigned char *sigbuf,unsigned int siglen, EVP_PKEY *pkey) ; 参数说明: ctx:[in] EVP_MD_CTX结构

文档评论(0)

汪汪队 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档