Difference between revisions of "Упражнение 10. Цифров подпис"

From Ilianko
(Created page with "→‎C program for the Implementation Of RSA Algorithm: #include <stdio.h> //#include <conio.h> int phi,M,n,e,d,C,FLAG; int check() { int i; for(i=3;e%i==0 && phi%i==0; i+...")
 
Line 1: Line 1:
 +
<code><pre>
 
/* C program for the Implementation Of RSA Algorithm */
 
/* C program for the Implementation Of RSA Algorithm */
  
Line 74: Line 75:
 
   return 0;
 
   return 0;
 
}
 
}
 +
</pre></code>

Revision as of 09:12, 12 May 2011

/* C program for the Implementation Of RSA Algorithm */

#include <stdio.h>
//#include <conio.h>

int phi,M,n,e,d,C,FLAG;

int check()
{
  int i;
  for(i=3;e%i==0 && phi%i==0; i+2)
  {
    FLAG = 1;
    return 0;
  }
  FLAG = 0;
  return 0;
};

void encrypt()
{
  int i;
  C = 1;
  for(i=0;i< e;i++)
  C=C*M%n;
  C = C%n;
  printf("\n\tEncrypted keyword : %d",C);
}

void decrypt()
{
  int i;
  M = 1;
  for(i=0;i< d;i++)
  M=M*C%n;
  M = M%n;
  printf("\n\tDecrypted keyword : %d",M);
}

int main()
{
  int p,q,s;
  //clrscr();
  printf("Enter Two Relatively Prime Numbers\t: ");
  scanf("%d%d",&p,&q);
  n = p*q;
  phi=(p-1)*(q-1);
  printf("\n\tF(n)\t= %d",phi);
  do
  {
    printf("\n\nEnter e\t: ");
    scanf("%d",&e);
    check();
  }
  while(FLAG==1);
  d = 1;
  
  do
  {
    s = (d*e)%phi;
    d++;
  }while(s!=1);
  
  d = d-1;
  printf("\n\tPublic Key\t: {%d,%d}",e,n);
  printf("\n\tPrivate Key\t: {%d,%d}",d,n);
  printf("\n\nEnter The Plain Text\t: ");
  scanf("%d",&M);
  encrypt();
  printf("\n\nEnter the Cipher text\t: ");
  scanf("%d",&C);
  decrypt();
  //getch();
  return 0;
}