資源簡介
1.該程序是基于OpenSSL的使用純C語言來實現(xiàn)RSA加解密的,在Linux環(huán)境下開發(fā)完成,建議在Linux環(huán)境下使用(在Windows環(huán)境下需要自行修改);
2.該程序具有生成RSA密鑰對、RSA公鑰加密和RSA私鑰解密的功能,支持手動輸入密鑰;
3.該程序支持不限長度的明文加密,支持256~4096長度的密鑰,支持Crypto++密碼庫生成的RSA密鑰對(公鑰:X.509,私鑰:PKCS#8);
4.該程序包中提供有可供二次開發(fā)的接口源文件和可在Linux下使用的.so動態(tài)鏈接庫文件;
5.該程序包中提供了相應(yīng)功能的測試小程序。

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
/*-------------------------------------------------------
?對公鑰進行PEM格式化
-------------------------------------------------------*/
void?PubKeyPEMFormat(char?*pubkey)
{
char?format_pubkey[4096]?=?{0};
char?pub_tem[4096]?=?{0};
char?*pub_begin?=?“-----BEGIN?PUBLIC?KEY-----\n“;
char?*pub_end?=?“-----END?PUBLIC?KEY-----\n“;
char?*check?=?strstr(pubkeypub_begin);
if(check)
{
return;
}
else
{
int?nPublicKeyLen?=?strlen(pubkey);?
int?index?=?0publength?=?0;
memcpy(format_pubkeypub_begin27);
for(index?=?0;?index? {
memcpy(pub_tempubkey+index64);
strcat(format_pubkeypub_tem);
publength?=?strlen(format_pubkey);
format_pubkey[publength]?=?‘\n‘;
}
strcat(format_pubkeypub_end);
memcpy(pubkeyformat_pubkeystrlen(format_pubkey));
}
}
/*-------------------------------------------------------
?對私鑰進行PKCS#8非加密的PEM格式化
-------------------------------------------------------*/
void?PrivKeyPEMFormat(char?*privkey)
{
char?format_privkey[4096]?=?{0};
char?priv_tem[4096]?=?{0};
char?*priv_begin?=?“-----BEGIN?PRIVATE?KEY-----\n“;
char?*priv_end?=?“-----END?PRIVATE?KEY-----\n“;
char?*check?=?strstr(privkey?priv_begin);?
if(check)
{
return;
}
else
{
int?nPrivateKeyLen?=?strlen(privkey);?
int?index?=?0privlength?=?0;
memcpy(format_privkeypriv_begin28);
for(index?=?0;?index? {
memcpy(priv_temprivkey+index64);
strcat(format_privkeypriv_tem);
privlength?=?strlen(format_privkey);
format_privkey[privlength]?=?‘\n‘;
}
strcat(format_privkeypriv_end);
memcpy(privkeyformat_privkeystrlen(format_privkey));
}
}
/*-------------------------------------------------------
?通過公鑰長度獲取加密長度
-------------------------------------------------------*/
int?getEncryptLengthByPubKey(int?pubKeyLen)
{
int?cryLen?=?0; /*加密長度*/
switch?(pubKeyLen)
{
case?138: /*256*/
cryLen?=?256;
break;
case?182: /*512*/
cryLen?=?512;
break;
case?272: /*1024*/
cryLen?=?1024;
break;
case?451: /*2048*/
cryLen?=?2048;
break;
case?800: /*4096*/
cryLen?=?4096;
break;
default:
break;
}
return?cryLen;
}
/*-------------------------------------------------------
?根據(jù)私鑰長度判斷對應(yīng)的加密長度,得出實際密文分段長度
-------------------------------------------------------*/
int?getCipherRealLenByPriKey(int?priKeyLen)
{
/*相應(yīng)加密長度對應(yīng)的每段密文長度*/
int?SignleRealLen?=?0;
if(priKeyLen?==?319?||?priKeyLen?==?323) /*256*/
SignleRealLen?=?32;
else?if(priKeyLen?==?518?||?priKeyLen?==?522) /*512*/
SignleRealLen?=?64;
else?if(priKeyLen?==?912?||?priKeyLen?==?916) /*1024*/
SignleRealLen?=?128;
else?if(priKeyLen?==?1700?||?priKeyLen?==?1704) /*2048*/
SignleRealLen?=?256;
else?if(priKeyLen?==?3268?||?priKeyLen?==?3272) /*4096*/
SignleRealLen?=?512;
return?SignleRealLen;
}
/*--
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-01-29?15:19??RSA_c\
?????目錄???????????0??2016-01-27?13:17??RSA_c\ThrClass\
?????目錄???????????0??2016-01-27?13:17??RSA_c\ThrClass\lib\
?????文件?????2576590??2015-11-11?18:46??RSA_c\ThrClass\lib\libcrypto.so
?????文件?????2576590??2015-11-11?18:46??RSA_c\ThrClass\lib\libcrypto.so.1.0.0
?????文件??????538134??2015-11-11?18:46??RSA_c\ThrClass\lib\libssl.so
?????文件??????538134??2015-11-11?18:46??RSA_c\ThrClass\lib\libssl.so.1.0.0
?????文件????????1928??2016-01-29?15:15??RSA_c\readme.txt
?????目錄???????????0??2016-01-29?14:53??RSA_c\rsa_test_tools\
?????文件????????2794??2016-01-29?14:16??RSA_c\rsa_test_tools\KeyFormatPKCS8.c
?????文件???????14154??2016-01-29?14:34??RSA_c\rsa_test_tools\hs_RSA_test.c
?????文件???????13681??2016-01-29?14:46??RSA_c\rsa_test_tools\rsa_encDec.c
?????文件????????3841??2016-01-29?14:52??RSA_c\rsa_test_tools\rsa_genKey.c
?????文件????????6446??2016-01-29?14:40??RSA_c\rsa_test_tools\rsa_so_tools.c
?????目錄???????????0??2016-01-29?14:56??RSA_c\s_hsrsa\
?????文件????????8716??2016-01-29?14:37??RSA_c\s_hsrsa\hs_rsa.c
?????文件????????4786??2016-01-29?13:16??RSA_c\s_hsrsa\hs_rsa_tools.c
?????文件???????31572??2016-01-29?14:56??RSA_c\s_hsrsa\libs_hsrsa.so
?????文件????????1305??2015-11-11?18:45??RSA_c\s_hsrsa\makefile
?????目錄???????????0??2016-01-29?13:56??RSA_c\src\
?????文件?????????835??2016-01-29?13:25??RSA_c\src\hs_rsa.h
?????文件?????????671??2016-01-27?14:08??RSA_c\src\hs_rsa_tools.h
評論
共有 條評論