首页 OpenSSL签名和验证(1)

OpenSSL签名和验证(1)

举报
开通vip

OpenSSL签名和验证(1)第5章OpenSSL签名和验证概述5.1函数介绍5.2实例应用小结概述OpenSSL中的签名,是先对原始数据计算摘要,然后对摘要使用私钥加密即签名。验证签名时,先对原始数据计算摘要,并对收到的签名使用公钥解密,然后对比二者结果,如果一致,则说明签名有效,否则,则认为签名无效(可能原因:原始数据或签名值被篡改)。OpenSSL在Evp.h中对签名和验证函数进行了封装。对数据签名,其实就是对数据的摘要进行私钥加密。验证签名就是解密签名数据,然后和原始摘要对比,看是否一致。数字签名结合数字证书可以实现身份认证、防篡改、防...

OpenSSL签名和验证(1)
第5章OpenSSL签名和验证概述5.1函数介绍5.2实例应用小结概述OpenSSL中的签名,是先对原始数据计算摘要,然后对摘要使用私钥加密即签名。验证签名时,先对原始数据计算摘要,并对收到的签名使用公钥解密,然后对比二者结果,如果一致,则说明签名有效,否则,则认为签名无效(可能原因:原始数据或签名值被篡改)。OpenSSL在Evp.h中对签名和验证函数进行了封装。对数据签名,其实就是对数据的摘要进行私钥加密。验证签名就是解密签名数据,然后和原始摘要对比,看是否一致。数字签名结合数字证书可以实现身份认证、防篡改、防抵赖的功能。签名的数据格式为PKCS#1。概述5.1函数介绍根据上面介绍可知,OpenSSL在使用私钥加密前的处理过程就是生成消息摘要的过程,因此函数实质一样,此处即摘要函数的宏定义,验证前同理。各个函数介绍如下:1、签名初始化函数#defineEVP_SignInit_exEVP_DigestInit_exintEVP_DigestInit_ex(EVP_MD_CTX*ctx,constEVP_MD*type,ENGINE*impl);2、签名更新函数#defineEVP_SignUpdateEVP_DigestUpdateintEVP_DigestUpdate(EVP_MD_CTX*ctx,constvoid*d,size_tcnt);3、签名结束函数intEVP_SignFinal(EVP_MD_CTX*ctx,unsignedchar*md,unsignedint*s,EVP_PKEY*pkey);功能:计算签名结束,输出签名值。参数说明:ctx:[IN]上下文变量md:[OUT]签名结果输出值的指针s:[OUT]签名的长度pkey:[IN]签名的私钥。4、验证初始化函数---设置摘要算法和摘要算法引擎#defineEVP_VerifyInit_exEVP_DigestInit_exintEVP_DigestInit_ex(EVP_MD_CTX*ctx,constEVP_MD*type,ENGINE*impl);5.1函数介绍5、验证更新函数#defineEVP_VerifyUpdateEVP_DigestUpdateintEVP_DigestUpdate(EVP_MD_CTX*ctx,constvoid*d,size_tcnt);6、验证结束函数intEVP_VerifyFinal(EVP_MD_CTX*ctx,constunsignedchar*sigbuf,unsignedintsiglen,EVP_PKEY*pkey);功能:计算验证结束,提示输出验证值。参数说明:ctx:[IN]上下文变量sigbuf:[IN]签名值siglen:[IN]签名的长度pkey:[IN]验证签名的公钥。5.1函数介绍1.RSA基本结构struct    {     intpad;     longversion;     constRSA_METHOD*meth;     ENGINE*engine;     BIGNUM*n;        n=p*q     BIGNUM*e;        公开的加密指数,经常为65537(ox10001)     BIGNUM*d;        私钥     BIGNUM*p;        大素数p     BIGNUM*q;        大素数q     BIGNUM*dmp1;     dmod(p-1)     BIGNUM*dmq1;     dmod(q-1)     BIGNUM*iqmp;     (inverseofq)modp     intreferences;     intflags;       //...     }RSA;5.1函数介绍(补充)2.初始化函数RSA*RSA_new(void);初始化一个RSA结构voidRSA_free(RSA*rsa);释放一个RSA结构3.RSA私钥产生函数RSA*RSA_generate_key(intnum,unsignedlonge,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签名和验证签名的常用函数。小结
本文档为【OpenSSL签名和验证(1)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
机构认证用户
希望图文
公司秉着用户至上的原则服务好每一位客户,专注课件、范文、教案设计制作
格式:ppt
大小:1MB
软件:PowerPoint
页数:12
分类:其他高等教育
上传时间:2022-05-05
浏览量:6