US:+16362902365 & BD:+8801711573570

info@techgensolution.com

A Leading Web Development Company 

Sharing is caring!

#include “stdafx.h”
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#pragma comment(lib, “libeay32.lib”)
#pragma comment(lib, “ssleay32.lib”)
#define PRIVATE_KEY_FILE “private.pem”
#define PUBLIC_KEY_FILE “public.pem”
const static char* pszPublicKey = “—–BEGIN RSA PUBLIC KEY—–\n”
“MIGJAoGBAK7mh7RSMtisKLn+Jfkq9AUlOHqUe4zjTLVC89k+sPux5ZMr9ndtjzdx\n”
“8bCcSfCQtemKrR2LY4lRr5cZs3jgwaBbHS2SdCezUuNUdrEEsfWX8BlK13G8djFm\n”
“mYZqKeQFnUrKZn+uA0A4nIGPRFKB2fKfBjh4Y5qN2IoyV9Y0e8HHAgMBAAE=\n”
“—–END RSA PUBLIC KEY—–“;
const static char* pszPrivateKey = “—–BEGIN RSA PRIVATE KEY—–\n”
“MIICXQIBAAKBgQCu5oe0UjLYrCi5/iX5KvQFJTh6lHuM40y1QvPZPrD7seWTK/Z3\n”
“bY83cfGwnEnwkLXpiq0di2OJUa+XGbN44MGgWx0tknQns1LjVHaxBLH1l/AZStdx\n”
“vHYxZpmGainkBZ1KymZ/rgNAOJyBj0RSgdnynwY4eGOajdiKMlfWNHvBxwIDAQAB\n”
“AoGASbqenFJGYvZ4GKfdhCMqSPz+yRXM24B6NrMprnvyCbhdiePvezrxM7NR6lyI\n”
“AuRN+0xdW+YFqL6Joc3QzXUZyffUtJ0I25J/r2UvpEY0GaH7JJKdfpE4YycQRkRc\n”
“gGt9YbcIjU4w0IpoIMH5G809ab6gTUxO1AwaAH1BovGt0vkCQQDfZxGT/AF+yCud\n”
“8YTqfEWRNgSOWxyyXefSCGh3x6HDo5uybOrVVpUOcB6WVRoj3mgUEtzAz4+jqe30\n”
“Bbknx8tFAkEAyGu5g6PjylakW1unrd1c3qlXR6C1wSHpYfpqhuDdw8nqD35pIWBy\n”
“UF9ELfd6gbh/6fnfiKcQJEDlgnkkKchjmwJALmvKWUe6P8/0UEOJbPgZtIzW8YW5\n”
“Ns8QhrI8kvcmg/KRPcgoG+B75J4jnPVeEyn50oIA4QfAPy/mRBiUWtHHSQJBALZb\n”
“PeqG/kYmW1k8pe7OUSfPULi9g2J85ordfHvIsj7owuziCenyhVCXvcNNP8w0AT70\n”
“uezuhQNXgPwcGUljKS0CQQDcKBgUE8PoT4Sic6WGvx+2S+gdXplNoZWhY/1p05fp\n”
“ddSkrRUiaC7CUGYilG2ea1r+7VWVWsSwS8vSceIBxBeV\n”
“—–END RSA PRIVATE KEY—–“;

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);
}

std::string bio_read_privateKey(string data)
{
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) {
printf(“read key file fail!\n”);
#if 0
unsigned long ulErr = ERR_get_error();
char szErrMsg[1024] = {0};
char *pTmp = NULL;
pTmp = ERR_error_string(ulErr,szErrMsg);
printf(“%s\n”, szErrMsg);
system(“pause”);
#endif
}else{
//printf(“read success!\n”);
}

int nLen = RSA_size(rsaK);
char *pEncode = new char[nLen + 1];
int ret = RSA_private_decrypt(data.length(),(const unsigned char*)data.c_str(),(unsigned char *)pEncode,rsaK,RSA_PKCS1_PADDING);
std::string strRet;
if (ret >= 0) {
strRet = std::string(pEncode, ret);
}
delete[] pEncode;
CRYPTO_cleanup_all_ex_data();
BIO_free_all( bp );
RSA_free(rsaK);
return strRet;
}

std::string bio_read_privateKey2(string data)
{
OpenSSL_add_all_algorithms();
BIO* bp = BIO_new( BIO_s_mem() );
BIO_puts(bp, pszPrivateKey);
RSA* rsaK;
rsaK = PEM_read_bio_RSAPrivateKey( bp, NULL, NULL, NULL );
if (NULL == rsaK) {
perror(“read key file fail!”);
}else{
//printf(“read success!\n”);
}

int nLen = RSA_size(rsaK);
char *pEncode = new char[nLen + 1];
int ret = RSA_private_decrypt(data.length(),(const unsigned char*)data.c_str(),(unsigned char *)pEncode,rsaK,RSA_PKCS1_PADDING);
std::string strRet;
if (ret >= 0) {
strRet = std::string(pEncode, ret);
}

delete[] pEncode;
CRYPTO_cleanup_all_ex_data();
BIO_free_all( bp );
RSA_free(rsaK);
return strRet;
}

std::string bio_read_publicKey(string data)
{
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) {
printf(“read key file fail!”);
}else{

}
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);
std::string strRet;
if (ret >= 0) {
strRet = std::string(pEncode, ret);
}
delete[] pEncode;
CRYPTO_cleanup_all_ex_data();
BIO_free_all( bp );
RSA_free(rsaK);
return strRet;
}

std::string bio_read_publicKey2(string data)
{
OpenSSL_add_all_algorithms();
BIO* bp = BIO_new( BIO_s_mem() );
BIO_puts(bp, pszPublicKey);
RSA* rsaK = PEM_read_bio_RSAPublicKey( bp, NULL, NULL, NULL );
if (NULL == rsaK) {
printf(“read key file fail!\n”);
#if 0
unsigned long ulErr = ERR_get_error();
char szErrMsg[1024] = {0};
char *pTmp = NULL;
pTmp = ERR_error_string(ulErr,szErrMsg);
printf(“%s\n”, szErrMsg);
system(“pause”);
#endif
}else{

}
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);
std::string strRet;
if (ret >= 0) {
strRet = std::string(pEncode, ret);
}
delete[] pEncode;
CRYPTO_cleanup_all_ex_data();
BIO_free_all( bp );
RSA_free(rsaK);
return strRet;
}

void encryptFile(string inputfile,string outputfile)
{
ifstream file(inputfile.c_str());
ofstream outfile(outputfile.c_str());
string tsum;
string ss;
while (getline(file,ss)) {
tsum.append(ss.append(“\n”));
}
cout<<"<

Sharing is caring!

Grab the latest deals on your inbox

Your email is safe ❤️ . I hate SPAM same as you!

Techgen IT Solution provides its clients with a variety of offshore business solutions like system design, .NET technology stack including C#, ASP.NET, MVC, Web API, SQL, Entity Framework, JavaScript and related technologies, namely AngularJS, Knockout, NodeJS etc

USA OFFICE

BD OFFICE 

© 2019 Techgen IT Solution. All Rights Reserved.

shares