• 大小: 2.43MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-04
  • 语言: C/C++
  • 标签: RSA  C语言  

资源简介

1.该程序是基于OpenSSL的使用纯C语言来实现RSA加解密的,在Linux环境下开发完成,建议在Linux环境下使用(在Windows环境下需要自行修改); 2.该程序具有生成RSA密钥对、RSA公钥加密和RSA私钥解密的功能,支持手动输入密钥; 3.该程序支持不限长度的明文加密,支持256~4096长度的密钥,支持Crypto++密码库生成的RSA密钥对(公钥:X.509,私钥:PKCS#8); 4.该程序包中提供有可供二次开发的接口源文件和可在Linux下使用的.so动态链接库文件; 5.该程序包中提供了相应功能的测试小程序。

资源截图

代码片段和文件信息

#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 < nPublicKeyLen; index += 64)
{
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 < nPrivateKeyLen; index += 64)
{
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;
}


/*-------------------------------------------------------
 根据私钥长度判断对应的加密长度,得出实际密文分段长度
-------------------------------------------------------*/
int getCipherRealLenByPriKey(int priKeyLen)
{
/*相应加密长度对应的每段密文长度*/
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

评论

共有 条评论