资源简介
使用Openssl实现RSA的加密和解密过程;使用Openssl实现签名和验签过程;SHA256WithRSA签名验签过程;封装很好,一看就懂,直接使用!
代码片段和文件信息
#include “stdafx.h“
#include “RSAEncode.h“
//***生成公钥和私钥文件***
void GenerateKey()
{
/* 生成公钥 */
RSA* rsa = RSA_generate_key(1024 RSA_F4 NULL NULL);
BIO *bp = BIO_new(BIO_s_file());
BIO_write_filename(bp PUBLIC_KEY_FILE);
PEM_write_bio_RSAPublicKey(bp rsa);
BIO_free_all(bp);
/* 生成私钥 */
bp = BIO_new(BIO_s_file());
BIO_write_filename(bp PRIVATE_KEY_FILE);
PEM_write_bio_RSAPrivateKey(bp rsa NULL NULL 0 NULL NULL);
CRYPTO_cleanup_all_ex_data();
BIO_free_all(bp);
RSA_free(rsa);
}
//***通过公钥加密数据***
string EncodeByBioPublicKey(string data)
{
string strRet;
OpenSSL_add_all_algorithms();
BIO* bp = BIO_new(BIO_s_file());
BIO_read_filename(bp PUBLIC_KEY_FILE);
RSA* rsaK = PEM_read_bio_RSAPublicKey(bp NULL NULL NULL);
if (NULL == rsaK)
{
unsigned long ulErr = ERR_get_error();
char szErrMsg[1024] = { 0 };
char *pTmp = NULL;
pTmp = ERR_error_string(ulErr szErrMsg);
printf(“bio_read_publicKey %s\n“ szErrMsg);
return strRet;
}
int nLen = RSA_size(rsaK);
char *pEncode = new char[nLen + 1];
int ret = RSA_public_encrypt(data.length() (const unsigned char*)data.c_str()
(unsigned char *)pEncode rsaK RSA_PKCS1_PADDING);
if (ret >= 0)
{
strRet = string(pEncode ret);
}
delete[] pEncode;
CRYPTO_cleanup_all_ex_data();
BIO_free_all(bp);
RSA_free(rsaK);
return strRet;
}
//***通过私钥解密数据***
string DecodeByBioPrivateKey(string data)
{
string strRet;
OpenSSL_add_all_algorithms();
BIO* bp = BIO_new(BIO_s_file());
BIO_read_filename(bp PRIVATE_KEY_FILE);
RSA* rsaK;
rsaK = PEM_read_bio_RSAPrivateKey(bp NULL NULL NULL);
if (NULL == rsaK)
{
unsigned long ulErr = ERR_get_error();
char szErrMsg[1024] = { 0 };
char *pTmp = NULL;
pTmp = ERR_error_string(ulErr szErrMsg);
printf(“%s\n“ szErrMsg);
}
int nLen = RSA_size(rsaK);
char *pEncode = new char[nLen + 1];
int nRet = RSA_private_decrypt(data.length() (const unsigned char*)data.c_str() (unsigned char *)pEncode rsaK RSA_PKCS1_PADDING);
if (nRet >= 0)
{
strRet = string(pEncode nRet);
}
delete[] pEncode;
CRYPTO_cleanup_all_ex_data();
BIO_free_all(bp);
RSA_free(rsaK);
return strRet;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 44032 2019-09-19 17:37 RSAWithOpenSSL\.vs\RSAWithOpenSSL\v14\.suo
文件 2104320 2019-09-19 00:08 RSAWithOpenSSL\Release\libcrypto-1_1.dll
文件 503808 2019-09-19 00:08 RSAWithOpenSSL\Release\libssl-1_1.dll
文件 15360 2019-09-19 17:25 RSAWithOpenSSL\Release\RSAWithOpenSSL.exe
文件 3349 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\aes.h
文件 3508 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\appli
文件 33627 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\asn1.h
文件 14599 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\asn1err.h
文件 32940 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\asn1t.h
文件 395 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\asn1_mac.h
文件 2398 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\async.h
文件 1326 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\asyncerr.h
文件 34868 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\bio.h
文件 6400 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\bioerr.h
文件 1847 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\blowfish.h
文件 22135 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\bn.h
文件 4907 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\bnerr.h
文件 1600 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\buffer.h
文件 820 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\buffererr.h
文件 3179 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\camellia.h
文件 1674 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\cast.h
文件 1064 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\cmac.h
文件 16379 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\cms.h
文件 11160 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\cmserr.h
文件 1328 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\comp.h
文件 1212 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\comperr.h
文件 5601 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\conf.h
文件 3429 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\conferr.h
文件 1300 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\conf_api.h
文件 17239 2019-09-19 00:08 RSAWithOpenSSL\RSAWithOpenSSL\include\openssl\crypto.h
............此处省略112个文件信息
- 上一篇:三维五角星
- 下一篇:C++课程设计-图书信息管理系统含源码、报告、PPT
相关资源
- 支持国密的OpenSSL 2.0
- OpenSSLx86 & x64开发库
- qt-everywhere-opensource-src-4.7.0.tar.gz
- RSA加密算法
- rabbitmq的C++客户端SimpleAmqpClient编译库
- openssh-8.2p1源码
- centOS7安装nginx安装包以及所有依赖包
- RSA加密算法C语言实现
- RSA加密字符串 C++ Builder 6.0
- C++ 超大整数类 及RSA加密
- openssl c语言应用
- RSA加密算法c语言
- DES加密和RSA加密程序mfc源代码
- RSA加密解密 MFC C++
- C++ 聊天软件源代码(内容加密RSA加密
- RSA加解密算法 C语言实现
- 基于c++的RSA加密解密程序及源码
- openssl加解密C语言代码
- rsa加密解密算法C语言代码
- 国密算法--Openssl 实现国密算法加密和
- ECC加密 RSA加密 C++ 简单实现 不带大数
- OpenSSL+VC6.0 实现的安全Web Server 客户端
- 纯C语言实现https的post和get不依赖任何
- MFC有界面RSA加密解密算法实现
- sm2加密,解密,签名,验签sm3哈希基
- RSA加密算法的C语言实现
- C语言https POST提交openSSL的应用可作为
- 字符串的RSA加密与解密 c语言实现
- OpenSceneGraph.3.0.Beginners.Guide
- rsa基于openssl1.1 实现签名(rsasign.cpp)
评论
共有 条评论