Упражнение 10. Цифров подпис

From Ilianko
Revision as of 09:11, 12 May 2011 by Anko (talk | contribs) (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+...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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

  1. 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;

}