使用Openssl实现电子签名(VC)

电脑杂谈  发布时间:2020-07-05 09:20:57  来源:网络整理

vc 获取鼠标位置_vc 获取当前鼠标位置_vc 获取数字签名

最近,我花了一些时间研究数字签名,因为电子签名在当今时代是如此重要,而电子商务,银行,电子政务和许多其他领域却与之密不可分. 关于电子签名,我们必须首先介绍一些基本概念.

一次对称加密

所谓的对称加密意味着加密和解密使用相同的密钥. 对称加密的特点是: 加密效率高,速度快,但是由于使用相同的密钥进行加密和解密,因此保护密钥的安全性是一个问题.

另一个: 基于密钥的加密是密码学的一大进步,因为密钥的替换非常容易,并且算法的开发和替换相对昂贵.

第二次非对称加密

非对称加密意味着将不同的密钥用于加密和解密. 最常见的算法是RSA,以发明人的名字命名. 要使用一个密钥加密,请使用另一个密钥解密. 这两个密钥之一是私钥(自我使用,自我控制),另一个是公钥(每个人都使用它,每个人都知道).

三,汇总算法

对于文本或文件,计算一条固定长度的信息,称为摘要信息,常用算法为: MD5,SHA1. 不同的文本或文档摘要是不同的,摘要信息就像文档的指纹一样.

所谓的电子签名是先计算文档的摘要信息,然后使用私钥进行加密,这个过程就是电子签名. 验证电子签名时vc 获取数字签名,请使用公钥解密签名信息以获得摘要信息,然后再次计算文档的摘要信息. 如果两个摘要信息相同,则称为电子签名匹配. 如果两个摘要信息相同,则表示该文档尚未修改vc 获取数字签名,并且由签名者签发.

电子签名与文件签名具有相同的功能. 使用电子签名也可以确认以下两点:

首先,消息是由签名者发送的;

vc 获取鼠标位置_vc 获取当前鼠标位置_vc 获取数字签名

第二,自发布和接收信息以来,该信息未被修改.

开发电子签名程序有两种常用方法,一种是使用开源的openssl库,另一种是使用Microsoft的cryptoAPI.

Openssl相对容易上手,并且可以跨平台,是开发人员的首选.

有许多使用openl在互联网上开发签名程序的示例,但是大多数示例在签名后直接得到验证. 该过程不够清晰,并且不包括读取私钥和公钥的功能,该功能还不够全面. 我使用了openssl开发套件来制作用于签名和验证的更完整的原型. 签名和验证分为两个部分. 签名后,您可以直接进行验证,当然,它是成功的;您还可以修改签名对象或签名信息,然后验证是否成功.

两个核心功能如下,整个程序,请从我的网络硬盘上下载()

读取私钥的功能:

EVP_PKEY * LoadPrivateKey(const char *文件名,const char *密码)

{

BIO * bp;

EVP_PKEY * pkey;

如果((bp = BIO_new(BIO_s_file()))== NULL)

vc 获取当前鼠标位置_vc 获取鼠标位置_vc 获取数字签名

{

返回(NULL);

}

BIO_read_filename(bp,filename);

如果((pkey = PEM_read_bio_PrivateKey(bp,NULL,NULL,(char *)password))

== NULL)

{

BIO_free(bp);

返回(NULL);

}

BIO_free(bp);

vc 获取鼠标位置_vc 获取数字签名_vc 获取当前鼠标位置

返回(pkey);

}

读取公钥的功能:

EVP_PKEY * LoadPublicKey(const char *文件名)

{

FILE * fp;

fp = fopen(filename,“ rb”);

if(fp == NULL){

返回NULL;

}

unsigned char derCert [4096];

vc 获取鼠标位置_vc 获取数字签名_vc 获取当前鼠标位置

unsigned long derCertLen;

derCertLen = fread(derCert,1,sizeof(derCert)/ sizeof(derCert [0]),fp);

fclose(fp);

const unsigned char * pTmp = derCert;

X509 * x = d2i_X509(NULL,&pTmp,derCertLen);

if(x == NULL){

ERR_load_ERR_strings();

ERR_load_crypto_strings();

ERR_print_errors_fp(stderr);

返回NULL;

}

EVP_PKEY * pubKey = X509_get_pubkey(x);

返回pubKey;

}


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/shouji/article-269165-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 苏倍玄
        苏倍玄

        他的卫心Y㎝6ОЗ一开始我也不信

      • 刘蕃
        刘蕃

        不一样的感觉

      • 刘亚涛
        刘亚涛

        看啦喜欢bb的声音太温暖啦

      热点图片
      拼命载入中...