• 大小: 6KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: C/C++
  • 标签: RSA  信息安全  

资源简介

这是一个完整的rsa算法 包括多种功能,包括对文件的加密解密以及简单的数据测试

资源截图

代码片段和文件信息

#include
#include
#include    
#include   
#include 
#include 
#define MAX 100
#define LEN sizeof(struct slink)
void sub(int a[MAX]int b[MAX] int c[MAX] );

struct slink

int  bignum[MAX];
/*bignum[98]用来标记正负号,1正,0负bignum[99]来标记实际长度*/
    struct slink *next;
};

/*/--------------------------------------自己建立的大数运算库-------------------------------------*/

void  print(  int a[MAX] )
   {
   int i;
   for(i=0;i    printf(“%d“a[a[99]-i-1]);
   printf(“\n\n“);
   return;
   }


int  cmp(int a1[MAX]int a2[MAX])
{   int l1 l2;
int i;
l1=a1[99];
l2=a2[99];
if (l1>l2)
     return 1;
    if (l1       return -1;
    for(i=(l1-1);i>=0;i--)
   {
   if (a1[i]>a2[i])
   return 1 ;
   if (a1[i]    return -1;
   }
    return 0;
}

void mov(int a[MAX]int *b)
{
int j;
for(j=0;j b[j]=a[j];

return ;
}


void mul(int a1[MAX]int a2[MAX]int *c)
{
 int ij;
 int y;
 int x;
 int z;
 int w;
 int l1 l2;
l1=a1[MAX-1];
l2=a2[MAX-1];
if (a1[MAX-2]==‘-‘&& a2[MAX-2]==‘-‘)
c[MAX-2]=0;
else if (a1[MAX-2]==‘-‘)
c[MAX-2]=‘-‘;
else if (a2[MAX-2]==‘-‘)
c[MAX-2]=‘-‘;
 for(i=0;i {
  for(j=0;j  {
     x=a1[i]*a2[j];
     y=x/10;
     z=x%10;
     w=i+j;
     c[w]=c[w]+z;
     c[w+1]=c[w+1]+y+c[w]/10;
     c[w]=c[w]%10;
  }
 }
 w=l1+l2;
 if(c[w-1]==0)w=w-1;
 c[MAX-1]=w;
 return;


void add(int a1[MAX]int a2[MAX]int *c)
{

 int il1l2;
 int lentemp[MAX];
 int k=0;
l1=a1[MAX-1];
l2=a2[MAX-1];
if((a1[MAX-2]==‘-‘)&&(a2[MAX-2]==‘-‘))
{
c[MAX-2]=‘-‘;
}
else if (a1[MAX-2]==‘-‘)
{
mov(a1temp);
temp[MAX-2]=0;
sub(a2tempc);
return;
}
else if (a2[MAX-2]==‘-‘)
{
mov(a2temp);
temp[98]=0;
sub(a1tempc);
return;
}

if(l1 else len=l2;
 for(i=0;i {
  c[i]=(a1[i]+a2[i]+k)%10;
  k=(a1[i]+a2[i]+k)/10;
 }
 if(l1>len)
 {
  for(i=len;i  {
   c[i]=(a1[i]+k)%10;
      k=(a1[i]+k)/10;   
  }
  if(k!=0)
  {
   c[l1]=k;
   len=l1+1;
  }
  else len=l1;
 }
 else
 {
  for(i=len;i  {
   c[i]=(a2[i]+k)%10;
   k=(a2[i]+k)/10;   
  }
  if(k!=0)
  {
   c[l2]=k;
   len=l2+1;
  }
  else len=l2;
 }
  c[99]=len;
  return;



void sub(int a1[MAX]int a2[MAX]int *c)
{
 int il1l2;
 int lent1[MAX]t2[MAX];
 int k=0;
l1=a1[MAX-1];
l2=a2[MAX-1];
if ((a1[MAX-2]==‘-‘) && (a2[MAX-2]==‘-‘))
{
mov(a1t1);
        mov(a2t2);
t1[MAX-2]=0;
        t2[MAX-2]=0;
sub(t2t1c);
return;
}
else if( a2[MAX-2]==‘-‘)
{
mov(a2t2);
t2[MAX-2]=0;
add(a1t2c);
return;
}
else if (a1[MAX-2]==‘-‘)
{
mov(a2t2);
t2[MAX-2]=‘-‘;
add(a1t2c);
return;
}

 if(cmp(a1a2)==1)
 {
 
 len=l2;
 for(i=0;i {
 if ((a1[i]-k-a2[i])<0)
 {
 c[i]=(a1[i]-a2[i]-k+10)%10;
     k=1;
 }
     else 
 {
 c[i]=(a1[i]-a2[i]-k)%10;
     k

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      22646  2010-11-20 17:58  RSA算法完整版.cpp

----------- ---------  ---------- -----  ----

                22646                    1


评论

共有 条评论