• 大小: 3KB
    文件类型: .cpp
    金币: 2
    下载: 1 次
    发布日期: 2021-06-18
  • 语言: C/C++
  • 标签: rsa  加解密  

资源简介

最简单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 << i & 0x80) 
   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]转二进制保存到文件中

评论

共有 条评论