Friday, 20 July 2018

Play Fair Cipher Encryption Decryption GTU

#include<stdio.h>
#include<string.h>
int main()
{
char box[5][5];
char key[25],plain[100];
int i,j,k=0,l=0;
char ch = 'a';
char alpha[25],temp[25];

printf("\nEnter the key");
scanf("%s",key);


for(i=0;i<25;i++)
{
    if(ch=='i')
    {
        i = i-1;
    }
    else
    {
        alpha[i] = ch;
    }
    ch++;
}

i=0,l=0;
while(key[i]!='\0')
{
    for(j=0;j<25;j++)
    {
        if(alpha[j]==key[i])
        {
            alpha[j] = '*';
            break;
        }
    }
    i++;
}
i=0,l=0,k=0;
for(i=0;i<25;i++)
{
    if(alpha[l]=='*')
    {}
    else
    {
        temp[k] = alpha[l];
        k++;
    }
    l++;
}
i=0;
j=0;
for(i=0;key[i]!='\0';i++)
{
    j= j+1;
}

i=0,l=0,k=0;
for(i=j;i<25;i++)
{
        key[i] = temp[l];
        l++;
}
k=0;
for(i=0;i<5;i++)
{
    for(j=0;j<5;j++)
    {
        box[i][j] = key[k];
        k++;
    }
}

printf("\nBOX:\n");

for(i=0;i<5;i++)
{
    for(j=0;j<5;j++)
    {
        printf(" %c ",box[i][j]);
    }
    printf("\n");
}


printf("\nEnter Plain text:");
scanf("%s",plain);
int size=0;
size= strlen(plain);
for(i=0;plain[i]!='\0';i++)
{
    if(plain[i]==plain[i+1])
    {
        for(j=size;j>i;j--)
        {
            plain[j]=plain[size-1];
            size--; 
        }
        plain[j+1] = 'x';   
    }
    printf("%c",plain[i]);
}
size= 0 ;
size=strlen(plain);
if(size%2!=0)
{
    plain[size]='x';
    plain[size+1]='\0';
}

printf("\nFinal Plain text is: %s",plain);
size= 0 ;
size=strlen(plain);
printf("\nEncryption is:");

i=0;j=0,k=0,l=0;
int row1=0,col1=0,row2=0,col2=0,q=0;
char pti,ptj,ci1,ci2;
char te[size];
while(plain[l]!='\0')
{
    pti = plain[l];
    ptj = plain[l+1];
   
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
        {           
            if(box[i][j] == pti)
            {
                row1 = i;
                col1 = j;
                k++;
            }
           
            if(box[i][j] == ptj)
            {
                row2 = i;
                col2 = j;
                k++;
            }
        }
    }
   
    if(row1 == row2)
    {
        ci1 = box[row1][(col1+1)%5];
        ci2 = box[row2][(col2+1)%5];
       
        te[q] = ci1;
        te[q+1] = ci2;
       
        printf("%c%c",ci1,ci2);
   
    }
    else if(col1 == col2)   
    {
        ci1 = box[(row1+1)%5][col1];
        ci2 = box[(row2+1)%5][col2];
       
        te[q] = ci1;
        te[q+1] = ci2;
       
        printf("%c%c",ci1,ci2);
    }
    else
    {
        ci1 = box[row1][col2];
        ci2 = box[row2][col1];
       
        te[q] = ci1;
        te[q+1] = ci2;
       
        printf("%c%c",ci1,ci2);
    }
   
    l=l+2;
    q=q+2;
}

size= 0 ;
for(i=0;te[i]!='\0';i++)
{
    size=size+1;
}
printf("\nDecryption is:");

i=0;j=0,k=0,l=0;
row1=0,col1=0,row2=0,col2=0,q=0;

while(plain[l]!='\0')
{
    pti = te[l];
    ptj = te[l+1];
   
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
        {
            if(box[i][j] == pti)
            {
                row1 = i;
                col1 = j;
                k++;
            }
            if(box[i][j] == ptj)
            {
                row2 = i;
                col2 = j;
                k++;
            }
        }
    }
    if(row1 == row2)
    {
        ci1 = box[row1][(col1-1)%5];
        ci2 = box[row2][(col2-1)%5];
        printf("%c%c",ci1,ci2);
    }
    else if(col1 == col2)   
    {
        ci1 = box[(row1-1)%5][col1];
        ci2 = box[(row2-1)%5][col2];
        printf("%c%c",ci1,ci2);
    }
    else
    {
        ci1 = box[row1][col2];
        ci2 = box[row2][col1];
        printf("%c%c",ci1,ci2);
    }
   
    l=l+2;
}
return 0;
}

It's time To increase blogging capability. To have a chance to contribute in digital world. Any Interested People who want to make t...