Saturday, March 21, 2015

Playfair cipher implementation in c

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;

}

No comments:

Post a Comment