openssl签名和验证

openssl签名和验证

ID:36596987

大小:254.25 KB

页数:12页

时间:2019-05-09

openssl签名和验证_第1页
openssl签名和验证_第2页
openssl签名和验证_第3页
openssl签名和验证_第4页
openssl签名和验证_第5页
资源描述:

《openssl签名和验证》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第九章openssl签名和验证Openssl在evp.h中对签名和验证函数进行了封装。对数据签名,实际就是对数据的摘要进行私钥加密。验证签名就是解密签名数据,和原始的摘要是否一样。Openssl中签名,是先对原始数据计算摘要,再对摘要进行私钥加密。验证的过程是对原始消息计算摘要,解密签名值,和摘要对比是否一致。如果一致,说明签名有效;否则,则认为原名或签名值被篡改。数据签名结合数字证书可以实现身份认证、防篡改、防抵赖的功能。签名的数据格式为PKCS#1.9.1概述Openssl处理签名的函数主要有EVP_SignInit_ex、EVP_SignUpdate和EVP_Sig

2、nFinal。签证签名函数主要有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_VerifyF

3、inal9.2.1签名初始化函数EVP_SignInit_ex函数功能:签名初始化,设置摘要算法、摘要算法引擎函数定义:此函数是宏定义函数,和消息摘要的函数是一样的。在openssl/evp.h文件中定义如下:#defineEVP_SignInit_ex(a,b,c)EVP_DigestInit_ex(a,b,c)intEVP_DigestInit_ex(EVP_MD_CTX,constEVP_MD*type,ENGINE*impl);参数说明:Ctx:[in]EVP_MD_CTX结构体,用来保存计算摘要时的上下文环境,如设置的摘要算法、当前已经计算的状态等。Type:表

4、示计算摘要使用的算法。Impl:表示摘要算法使用引擎。应用程可以使用自定义的算法引擎,如硬件摘要算法等。9.2.2签名函数EVP_SignUpdate函数功能:签名update,计算数据摘要。此函数可以被调用多次,适用于大段数据的摘要计算。函数定义:#defineEVP_SignUpdate_ex(a,b,c)EVP_DigestUpdate(a,b,c)intEVP_DigestUpdate(EVP_MD_CTX,constvoid*d,size_tcnt);参数说明:Ctx:[in]EVP_MD_CTX结构体,用来保存计算摘要时的上下文环境,如设置的摘要算法、当前已经

5、计算的状态等。d:待计算摘要的数据。cnt:计算摘要的数据长度。返回值:如果调用成功返回1,否则返回09.2.3签名结束函数EVP_SignFinal函数功能:计算签名结束,输出签名值。函数定义:IntEVP_SignFinal(EVP_MD_CTX*ctx,unsignedchar*md,unsignedint*s,EVP_PKEY*pkey);参数说明:Ctx:[in]EVP_MD_CTX结构体,用来保存计算摘要时的上下文环境,如设置的摘要算法、当前已经计算的状态等。md:签名结果输出值的指针。s:[out]size_t类型数据,签名的长度。Pkey:签名的私钥。返回

6、值:调用成功返回1,否则返回0.9.2.4验证初始化函数EVP_VerifyInit_ex函数功能:验证签名初始化,设置摘要算法、摘要算法引擎。函数定义:#defineEVP_VerifyInit_ex(a,b,c)EVP_DigestInit_ex(a,b,c)intEVP_DigestInit_ex(EVP_MD_CTX,constEVP_MD*type,ENGINE*impl);参数说明:Ctx:[in]EVP_MD_CTX结构体,表示上下文变量。type:表示摘要使用的算法。impl:表示摘要算法使用引擎。返回值:成功为1,否则为0.9.2.5验证函数EVP_Ve

7、rifyUpdate函数功能:计算数据摘要。函数定义:该函数是宏定义函数,其实和消息摘要的函数是一样的。#defineEVP_VerifyUpdate(a,b,c)EVP_DigestUpdate(a,b,c)IntEVP_DigestUpdate(EVP_MD_CTX*ctx,constvoid*d,size_tcnt);参数说明:ctx:[in]EVP_MD_CTX结构体,表示上下文变量。d:[in]待计算摘要的数据。cnt:[in]size_t类型数据,表示计算摘要的数据长度。9.2.6验证结束函数EVP_VerifyF

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。