excel常用函数:Open SSL 常用函数——签名与验证



OpenSSL验证是先对原始数据计算摘要, 再对摘要进行私钥加密. 验证过程是对原始消息计算摘要,解密验证值, 和摘要对比是否.如果, 介绍说明验证有效:否则,则认为原文或验证值已经被篡改.

         介绍:

要先对原始数据计算摘要, 所以在计算摘要时用是计算摘要. 最后在结束中进行验证或验证. 为了方便描述, OpenSSL对计算摘要进行了宏定义封装.下边是定义:

1、  签名

# EVP_SignInit_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、  签名更新

# EVP_SignUpdate(a, b, c)                EVP_DigestUpdate(a, b, c)

Int EVP_DigestUpdate(EVP_MD_CTX *ctx, const *d, size_t cnt);

3、  签名结束

Int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned *s, EVP_PKey pkey);

功能:计算签名结束 输出签名值

参数介绍说明:

Ctx:[IN]上下文变量

Md:[OUT] 签名结果输出值指针  s:[OUT] 签名长度

Pkey:[IN] 签名私钥(*后面有私钥计算过程)

4、  验证 (* 跟签名)

# EVP_VeryInit_ex(a, b, c)              EVP_DigestInit_ex(a, b, c)

Int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *imp1);

5、  验证更新(* 跟签名)

# EVP_VeryUpdate(a, b, c)             EVP_DigestUpdate(a, b, c)

Int EVP_DigestUpdate(EVP_MD_CTX *ctx, const *d, size_t cnt);

6、  验证结束

Int EVP_VeryFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf, unsigned siglen, EVP_PKey pkey);

功能:计算验证结束 输出验证值

参数介绍说明:

Ctx:[IN]上下文变量

sigbuf:[IN] 签名值  siglen:[IN] 签名长度

Pkey:[IN] 验证签名公钥

计算私钥过程: 直接写代码出来(*下面代码如果按百分算最多只能得 3十分 所以不要照搬, 我这么写只是想把过程说得简单清楚点)

RSA rsa = RSA_generate_key(1024, RSA_F4, NULL, NULL);//产生1024RSA密钥

EVP_PKEY *evpKey = EVP_PKEY_; //新建EVP_PKEY变量

EVP_PKEY_1_RSA(evpKey, rsa);  //保存RSA结构体到EVP_PKEY结构体

//完成任务后面就可以用evpKey来签名了

Tags:  oracle常用函数 open函数 常用函数 excel常用函数

延伸阅读

最新评论

发表评论