C++基础:OpenSSL常用函数(签名与验证)

C++基础:OpenSSL常用函数(签名与验证),第1张

C++基础:OpenSSL常用函数(签名与验证),第2张

OpenSSL中的验证是先计算原始数据的摘要,然后用私钥加密。验证的过程是计算原始消息的摘要,解密验证值,并与摘要进行比较。如果一致,则表示验证有效:否则,认为原文或验证值被篡改。
函数介绍:
因为要先计算原始数据的摘要,所以,用来计算摘要的函数和用来计算摘要的函数是一样的。最后在end函数中验证或验证。为了描述方便,OpenSSL封装了计算抽象函数的宏定义。下面是函数定义:
1。签名初始化函数
# definevp _ sign init _ ex(a,b,c) EVP_DigestInit_ex(a,b,c)
Int EVP _ DigestInit _ ex(EVP _ MD _ CTX * CTX,const EVP_MD *type,ENGINE * imp1);
2。签名更新函数
# define EVP _ signupdate (a,b,c) EVP _ digestupdate (a,b,c)
int EVP _ digestupdate(EVP _ MD _ CTX * CTX,const * d,。
3。签名结束函数
int EVP _ sign final(EVP _ MD _ CTX * CTX,unsigned char * MD,unsigned int * s,EVP _ pkeypkey);
功能:计算签名,输出签名值。
参数描述:
CTX: [in]上下文变量
MD: [out]签名结果S输出值的指针:[out]签名长度
PKEY: [in]签名私钥。(*后面是私钥的计算过程)
4。验证初始化函数(*调用与签名相同的函数)
# define VP _ verify init _ ex(a,b,c) EVP _ digestinit _ ex (a,b,c)
int EVP
5 .验证更新函数(*调用与签名相同的函数)
# define EVP _ verify update(a,b,c) EVP _ DigestUpdate (a,b,c)
INTEVP _ DigestUpdate(EVP _ MD _ CTX
6、验证结束函数
int EVP _ verify final(EVP _ MD _ CTX * CTX,const unsigned char * sigbuf,unsigned int siglen,EVP _ pkey pkey);
功能:当计算验证完成后,测试提示会输出验证值。
参数描述:
CTX: [in]上下文变量
sigbuf: [in]签名值siglen: [in]签名长度
pkey: [in]验证签名的公钥。
计算私钥的过程:直接写代码(*以下代码如果按百分比计算最多只能得30分,不要抄袭。我只是想让过程简单明了)
RSA RSA = RSA _ generate _ key(1024,RSA _ F4,null,null);//生成一个1024位RSA密钥
EVP _ pkey * EVP key = EVP _ pkey _ new();//新建一个EVP_PKEY变量
EVP _ PKEY _ SET1 _ RSA (EVPKEY,RSA);//将RSA结构保存到EVP_PKEY结构
//完成任务后可以用evpKey签名。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C++基础:OpenSSL常用函数(签名与验证)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情