資源簡介
此代碼有如下特點:
1 知道解密結果是否正確 省去了在數據里加校驗和
2 知道解密后的數據大小 省去了在數據里標明大小
3 在用公鑰加密數據時用到了隨機數 即每次加密相同的數據結果都不一樣 省去了在數據里隨機數
4 公鑰加密私鑰解密 私鑰加密公鑰解密 一對密鑰即可相互傳輸數據
5 支持512 1024 2048三種級別的加密
更多信息請移步
http: blog csdn net sidyhe article details 39102329">此代碼有如下特點:
1 知道解密結果是否正確 省去了在數據里加校驗和
2 知道解密后的數據大小 省去了在數據里標明大小
3 在用公鑰加密數據時用到了隨機數 即每次加密相同的數據結果都不一樣 省去了在數據里隨機數
4 [更多]
代碼片段和文件信息
//?RSA.cpp?:?定義控制臺應用程序的入口點。
//?http://blog.csdn.net/sidyhe
#include?“stdafx.h“
#include?“RSAEuro/rsaeuro.h“
#include?
/*
int?_tmain(int?argc?_TCHAR*?argv[])
{
R_RSA_PUBLIC_KEY??PubKey;
R_RSA_PRIVATE_KEY?PriKey;
R_RANDOM_STRUCT???RandSt;
R_RSA_PROTO_KEY???ProKey;
//生成密鑰對
R_RandomCreate(&RandSt);
ProKey.bits?=?1024;//512?or?1024?or?2048
ProKey.useFermat4?=?1;
R_GeneratePEMKeys(&PubKey?&PriKey?&ProKey?&RandSt);
if?(FILE?*f?=?fopen(“pub.key“?“wb“))
{
fwrite(&PubKey?sizeof(PubKey)?1?f);
fclose(f);
}
if?(FILE?*f?=?fopen(“pri.key“?“wb“))
{
fwrite(&PriKey?sizeof(PriKey)?1?f);
fclose(f);
}
//公鑰加密私鑰解密
char?*TestBuffer?=?“Hello!Sid!!!“;
{
unsigned?char?EncryptBuffer[128]?=?{0};
unsigned?char?DecryptBuffer[128]?=?{0};
unsigned?int?InputLen?=?sizeof(EncryptBuffer);
unsigned?int?OutputLen?=?sizeof(DecryptBuffer);
R_RandomCreate(&RandSt);
RSAPublicEncrypt(EncryptBuffer?&InputLen?(unsigned?char*)TestBuffer?strlen(TestBuffer)?&PubKey?&RandSt);
RSAPrivateDecrypt(DecryptBuffer?&OutputLen?EncryptBuffer?InputLen?&PriKey);
printf(“Test1:%s\n“?DecryptBuffer);
}
//私鑰加密公鑰解密
{
unsigned?char?EncryptBuffer[128]?=?{0};
unsigned?char?DecryptBuffer[128]?=?{0};
unsigned?int?InputLen?=?sizeof(EncryptBuffer);
unsigned?int?OutputLen?=?sizeof(DecryptBuffer);
RSAPrivateEncrypt(EncryptBuffer?&InputLen?(unsigned?char*)TestBuffer?strlen(TestBuffer)?&PriKey);
RSAPublicDecrypt(DecryptBuffer?&OutputLen?EncryptBuffer?InputLen?&PubKey);
printf(“Test2:%s\n“?DecryptBuffer);
}
getchar();
return?0;
}
*/
int?_tmain(int?argc?_TCHAR*?argv[])
{
R_RSA_PUBLIC_KEY??PubKey;
R_RSA_PRIVATE_KEY?PriKey;
if?(FILE?*f?=?fopen(“pub.key“?“rb“))
{
fread(&PubKey?sizeof(PubKey)?1?f);
fclose(f);
}
if?(FILE?*f?=?fopen(“pri.key“?“rb“))
{
fread(&PriKey?sizeof(PriKey)?1?f);
fclose(f);
}
//
char?*TestBuffer?=?“Hello!Sid!!!“;
{
unsigned?char?EncryptBuffer[128]?=?{0};
unsigned?char?DecryptBuffer[128]?=?{0};
unsigned?int?InputLen?=?sizeof(EncryptBuffer);
unsigned?int?OutputLen?=?sizeof(DecryptBuffer);
RSAPrivateEncrypt(EncryptBuffer?&InputLen?(unsigned?char*)TestBuffer?strlen(TestBuffer)?&PriKey);
RSAPublicDecrypt(DecryptBuffer?&OutputLen?EncryptBuffer?InputLen?&PubKey);
printf(“Test2:%s\n“?DecryptBuffer);
}
getchar();
return?0;
}
- 上一篇:CodeSnitch破解版,支持WINCE6.0
- 下一篇:最小二乘法線性非線性擬合
評論
共有 條評論