資源簡介
最簡單rsa加解密,簡單易懂,有益于初步學習。 !?。?!
代碼片段和文件信息
#include???
#include???
#include?
using?namespace?std;
/*?RSA算法中加密方公布的密鑰是N和E,解密方使用N和D解密?*/??
#define?P???5???/*?P和Q必須為素數,在實際運用中通常為很大的數?*/??
#define?Q???7??
??
#define?N???(P*Q)???/*?add?the?()?or?will?cause?the?mistake?*/??
#define?Z???((P?-?1)*(Q?-?1))??
??
#define?E???5???????/*?加密方選擇E,E必須和Z只有一個公約數?*/??
#define?D???5???????/*?(E?*?D?-?1)必須能夠被Z整除?*/??
????????????????????/*?由于long?int無法表示過大的數字,所以D取5?*/???
??
??
int?main(void)??
{??
????//讀取文件,將每個字符按二進制每兩位組一個數放入int數組,然后對每個數進行加密,加密后的放入數組2
//將數組2的數重新組成一個數放入加密文件中
char?filenameDJM[100]={0};
char?filenameYJM[100]={0};
char?filenameJM[100]={0};
cout<<“輸入待價密文件文件名:“;cin>>filenameDJM;
cout<<“輸入加密后文件文件名:“;cin>>filenameYJM;
cout<<“輸入解密后文件文件名:“;cin>>filenameJM;
int?i;??
//打開明文文件
FILE?*fp?=fopen(filenameDJM“rb“);
if(fp==NULL)
{
????cout<<“文件不存在1“;
system(“pause“);return?0;
}
//打開存放密文的文件
FILE?*wfp=fopen(filenameYJM“wb“);
if(wfp==NULL)
{
fclose(fp);
????cout<<“文件不存在2“;
system(“pause“);return?0;
}
int?str=0;
while(0<(str=fgetc(fp)))
{
int?TrsMsg[4];
int?j=0;
for(i?=?0;?i?8;?i=i+2)?
{?
??if(str?< ???TrsMsg[j]=1;?
??else?
???TrsMsg[j]=0;?
??
??if(str?<(i+1)?&?0x80)?
???TrsMsg[j]=TrsMsg[j]*2+1;?
??else?
???TrsMsg[j]=TrsMsg[j]*2+0;
??j++;
}?
long?en[4]?de[4];??
int?SecCode[4];??
?
??
//加密
for?(i=0;?i<4;?i++)??
{??
/*?s?=?m(E)?mod?N?*/??
en[i]?=?(int)pow((double)TrsMsg[i]?E);??
SecCode[i]?=?en[i]?%?N;??
//將SecCode[i]轉二進制保存到文件中
- 上一篇:單片機控制直流電機正反轉程序c語言
- 下一篇:頻域積分-傅里葉變換-反變換.zip
評論
共有 條評論