Code
/*
#PLAYFAIR CIPHER C IMPLEMENTATION
*/
#include<stdio.h>
#include<string.h>
int main()
{
// START OF INITIALIZATION
char a[9],mk[99],table[5][5],in[88];
int i,k,key_leagth,j,cn=0,sl,ct=0,m=0,inl,c1,c2,r1,r2,tst=0,length_plain;
//END OF INITIALIZATION
// INPUT KEY AND TAKE ALL ALPHABET
printf("\t \t \t*** ENTER KEY ***\n \n \n");
gets(a);
key_leagth=strlen(a);
strcpy(mk,a);
for(i=key_leagth;i<26+key_leagth;i++)
{
mk[i]=97+cn;
cn++;
}
//MAKE UNIQUE 25 ALPHABET
printf("\t \t \t*** REQUIRED MATRIX IS ***\n \n \n");
k=strlen(mk);
while(sl>26)
{
for(i=1;i<k;i++)
{
for(j=0;j<i;j++)
{
if(mk[i]==mk[j] || mk[i]=='j')
{
for(j=i;j<k;j++)
{
mk[j]=mk[j+1];
}
}
}
}
i=1;
sl=strlen(mk);
ct++;
if(sl!=26 && ct==5)
break;
}
//MAKE 5*5 MATRIX
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(mk[m]!='j')
{
table[i][j]=mk[m];
}
m++;
if(mk[m]!='j')
printf("\t%c\t",table[i][j]);
}
printf("\n");
}
//MANIPULATION OF INPUT PLAIN TEXT
printf("\n \n \t \t \t*** ENTER PLAIN TEXT ***\n \n \n");
gets(in);
length_plain=strlen(in);
for(i=0;i<length_plain;i=i+2)
{
if(in[i]==in[i+1])
{
for(j=length_plain;j>=i+1;j--)
{
in[j+1]=in[j];
}
in[i+1]='x';
length_plain++;
}
}
if(length_plain%2==1)
{
in[length_plain+1]='\0';
in[length_plain]='x';
}
//CONVERT 'J' TO 'I'
inl=strlen(in);
for(i=0;i<inl;i++)
{
if(in[i]=='j')
in[i]='i';
}
/*
CIPHER TEXT MAKING
CORE ENCRYPTION PART
*/
printf("\n \n \t \t \t*** CIPHER TEXT ***\n \n \n");
for(k=0;k<inl;k=k+2)
{
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(table[i][j]==in[tst])
{
r1=i;
c1=j;
}
if(table[i][j]==in[tst+1])
{
r2=i;
c2=j;
}
}
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(r1==r1)
{
in[tst]=table[r1][(c1+1)%5];
in[tst+1]=table[r2][(c2+1)%5];
}
if(c1==c2)
{
in[tst]=table[(r1+1)%5][c1];
in[tst+1]=table[(r2+1)%5][c2];
}
if(c1!=c2 && r1!=r2)
{
in[tst]=table[r1][c2];
in[tst+1]=table[r2][c1];
}
}
}
printf("%c%c",in[tst],in[tst+1]);
tst=tst+2;
}
printf("\n \n \t \t \t*** END OF PROGRAM ***\n \n \n");
return 0;
}
/*
#PLAYFAIR CIPHER C IMPLEMENTATION
*/
#include<stdio.h>
#include<string.h>
int main()
{
// START OF INITIALIZATION
char a[9],mk[99],table[5][5],in[88];
int i,k,key_leagth,j,cn=0,sl,ct=0,m=0,inl,c1,c2,r1,r2,tst=0,length_plain;
//END OF INITIALIZATION
// INPUT KEY AND TAKE ALL ALPHABET
printf("\t \t \t*** ENTER KEY ***\n \n \n");
gets(a);
key_leagth=strlen(a);
strcpy(mk,a);
for(i=key_leagth;i<26+key_leagth;i++)
{
mk[i]=97+cn;
cn++;
}
//MAKE UNIQUE 25 ALPHABET
printf("\t \t \t*** REQUIRED MATRIX IS ***\n \n \n");
k=strlen(mk);
while(sl>26)
{
for(i=1;i<k;i++)
{
for(j=0;j<i;j++)
{
if(mk[i]==mk[j] || mk[i]=='j')
{
for(j=i;j<k;j++)
{
mk[j]=mk[j+1];
}
}
}
}
i=1;
sl=strlen(mk);
ct++;
if(sl!=26 && ct==5)
break;
}
//MAKE 5*5 MATRIX
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(mk[m]!='j')
{
table[i][j]=mk[m];
}
m++;
if(mk[m]!='j')
printf("\t%c\t",table[i][j]);
}
printf("\n");
}
//MANIPULATION OF INPUT PLAIN TEXT
printf("\n \n \t \t \t*** ENTER PLAIN TEXT ***\n \n \n");
gets(in);
length_plain=strlen(in);
for(i=0;i<length_plain;i=i+2)
{
if(in[i]==in[i+1])
{
for(j=length_plain;j>=i+1;j--)
{
in[j+1]=in[j];
}
in[i+1]='x';
length_plain++;
}
}
if(length_plain%2==1)
{
in[length_plain+1]='\0';
in[length_plain]='x';
}
//CONVERT 'J' TO 'I'
inl=strlen(in);
for(i=0;i<inl;i++)
{
if(in[i]=='j')
in[i]='i';
}
/*
CIPHER TEXT MAKING
CORE ENCRYPTION PART
*/
printf("\n \n \t \t \t*** CIPHER TEXT ***\n \n \n");
for(k=0;k<inl;k=k+2)
{
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(table[i][j]==in[tst])
{
r1=i;
c1=j;
}
if(table[i][j]==in[tst+1])
{
r2=i;
c2=j;
}
}
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(r1==r1)
{
in[tst]=table[r1][(c1+1)%5];
in[tst+1]=table[r2][(c2+1)%5];
}
if(c1==c2)
{
in[tst]=table[(r1+1)%5][c1];
in[tst+1]=table[(r2+1)%5][c2];
}
if(c1!=c2 && r1!=r2)
{
in[tst]=table[r1][c2];
in[tst+1]=table[r2][c1];
}
}
}
printf("%c%c",in[tst],in[tst+1]);
tst=tst+2;
}
printf("\n \n \t \t \t*** END OF PROGRAM ***\n \n \n");
return 0;
}
No comments:
Post a Comment