RSA Program Input
ENTER FIRST PRIME NUMBER 7 ENTER ANOTHER PRIME NUMBER 17 ENTER MESSAGE hello
C Program
- #include<stdio.h>
- #include<conio.h>
- #include<stdlib.h>
- #include<math.h>
- #include<string.h>
- long int p,q,n,t,flag,e[100],d[100],temp[100],j,m[100],en[100],i;
- char msg[100];
- int prime(long int);
- void ce();
- long int cd(long int);
- void encrypt();
- void decrypt();
- void main() {
- clrscr();
- printf("\nENTER FIRST PRIME NUMBER\n");
- scanf("%d",&p);
- flag=prime(p);
- if(flag==0) {
- printf("\nWRONG INPUT\n");
- getch();
- exit(1);
- }
- printf("\nENTER ANOTHER PRIME NUMBER\n");
- scanf("%d",&q);
- flag=prime(q);
- if(flag==0||p==q) {
- printf("\nWRONG INPUT\n");
- getch();
- exit(1);
- }
- printf("\nENTER MESSAGE\n");
- fflush(stdin);
- scanf("%s",msg);
- for (i=0;msg[i]!=NULL;i++)
- m[i]=msg[i];
- n=p*q;
- t=(p-1)*(q-1);
- ce();
- printf("\nPOSSIBLE VALUES OF e AND d ARE\n");
- for (i=0;i<j-1;i++)
- printf("\n%ld\t%ld",e[i],d[i]);
- encrypt();
- decrypt();
- getch();
- }
- int prime(long int pr) {
- int i;
- j=sqrt(pr);
- for (i=2;i<=j;i++) {
- if(pr%i==0)
- return 0;
- }
- return 1;
- }
- void ce() {
- int k;
- k=0;
- for (i=2;i<t;i++) {
- if(t%i==0)
- continue;
- flag=prime(i);
- if(flag==1&&i!=p&&i!=q) {
- e[k]=i;
- flag=cd(e[k]);
- if(flag>0) {
- d[k]=flag;
- k++;
- }
- if(k==99)
- break;
- }
- }
- }
- long int cd(long int x) {
- long int k=1;
- while(1) {
- k=k+t;
- if(k%x==0)
- return(k/x);
- }
- }
- void encrypt() {
- long int pt,ct,key=e[0],k,len;
- i=0;
- len=strlen(msg);
- while(i!=len) {
- pt=m[i];
- pt=pt-96;
- k=1;
- for (j=0;j<key;j++) {
- k=k*pt;
- k=k%n;
- }
- temp[i]=k;
- ct=k+96;
- en[i]=ct;
- i++;
- }
- en[i]=-1;
- printf("\nTHE ENCRYPTED MESSAGE IS\n");
- for (i=0;en[i]!=-1;i++)
- printf("%c",en[i]);
- }
- void decrypt() {
- long int pt,ct,key=d[0],k;
- i=0;
- while(en[i]!=-1) {
- ct=temp[i];
- k=1;
- for (j=0;j<key;j++) {
- k=k*ct;
- k=k%n;
- }
- pt=k+96;
- m[i]=pt;
- i++;
- }
- m[i]=-1;
- printf("\nTHE DECRYPTED MESSAGE IS\n");
- for (i=0;m[i]!=-1;i++)
- printf("%c",m[i]);
- }