好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

openssl签名和验证.ppt

12页
  • 卖家[上传人]:cl****1
  • 文档编号:588355652
  • 上传时间:2024-09-08
  • 文档格式:PPT
  • 文档大小:58.50KB
  • / 12 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第九章第九章 openssl签名和验证签名和验证 •Openssl 在中对签名和验证函数进行了封装对在中对签名和验证函数进行了封装对数据签名,实际就是对数据的摘要进行私钥加密数据签名,实际就是对数据的摘要进行私钥加密验证签名就是解密签名数据,和原始的摘要是否验证签名就是解密签名数据,和原始的摘要是否一样•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_exEVP_SignUpdateEVP_SignFinalEVP_VerifyInit_exEVP_VerifyUpdateEVP_VerifyFinal 签名初始化函数签名初始化函数EVP_SignInit_ex函数功能:签名初始化,设置摘要算法、摘要算法引擎函数功能:签名初始化,设置摘要算法、摘要算法引擎函数定义:函数定义:此函数是宏定义函数,和消息摘要的函数是一样的在文件中定义如下:此函数是宏定义函数,和消息摘要的函数是一样的在文件中定义如下:#define EVP_SignInit_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:表示摘要算法使用引擎应用程可以使用自定义的算法引擎,如硬件摘:表示摘要算法使用引擎应用程可以使用自定义的算法引擎,如硬件摘要算法等要算法等 签名函数签名函数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 签名结束函数签名结束函数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. 验证初始化函数验证初始化函数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结构体,表示上下文变量结构体,表示上下文变量sigbuf: [in]const unsigned char*类型数据,表示签名值的长度类型数据,表示签名值的长度siglen:: [in]unsigned int类型数据,表示签名值的长度类型数据,表示签名值的长度Pkey:: [in]EVP_PKEY*类型数据,表示验证签名的公钥类型数据,表示验证签名的公钥 9.3 实例应用实例应用了解了签名和验证的主要函数后,下面通过了解了签名和验证的主要函数后,下面通过一个实例来说明这些函数的用法。

      签名和一个实例来说明这些函数的用法签名和验证能够完成消息的防篡改、签名者身份验证能够完成消息的防篡改、签名者身份认证和防抵赖认证和防抵赖本例通过本例通过rsa算法,对一段数据进行数字签名算法,对一段数据进行数字签名并利用公钥进行验证并利用公钥进行验证 数据签名处理:数据签名处理:初始化摘要算法结构体初始化摘要算法结构体签名初始化,签名初始化,设置摘要算法、密码算法引擎设置摘要算法、密码算法引擎循环调用签名(摘要)循环调用签名(摘要)update,,直到处理完所有的数据直到处理完所有的数据调用摘要结束函数,输出调用摘要结束函数,输出最后的摘要值最后的摘要值结束结束开始开始加载或读取私钥加载或读取私钥结束结束初始化摘要算法结构体初始化摘要算法结构体验证初始化,验证初始化,设置摘要算法、密码算法引擎设置摘要算法、密码算法引擎调用签名结束函数,输出调用签名结束函数,输出签名值签名值开始开始加载或读取私钥(一般从证加载或读取私钥(一般从证书中读取公钥)书中读取公钥)循环调用验证(摘要)循环调用验证(摘要)update,,直到处理完所有的数据直到处理完所有的数据验证数据签名处理:验证数据签名处理:流程图流程图 。

      点击阅读更多内容
      相关文档
      【全国硕士研究生入学统一考试政治】2020年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2015年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2010年考研政治真题.docx 【全国硕士研究生入学统一考试政治】1996年政治考研真题(理科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2001年政治考研真题(理科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2016年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2000年政治考研真题(文科)及参考答案.doc 【全国硕士研究生入学统一考试政治】1997年政治考研真题(理科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2007年考研政治真题.doc 【全国硕士研究生入学统一考试政治】1997年政治考研真题(文科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2004年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2003年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2019年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2009年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2001年政治考研真题(文科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2021年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2014年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2018年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2008年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2011年考研政治真题.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.