Hello,
I am a new member.I am pasting a C code for the DES encryption algorithm. Although I do not understand much of the mathematical discussions about cryptography and encryption, I go hope to study this field. This code accepts 64 bit binary data and a 56 bit binary key,since 8 bits out of the 64 bits are used for error checking.
I only want the members to verify the code,because I once tried to verify it from an example from a book.The encrypted data my code gave was notconsistent with the book's answer.But the book did have some printing mistakes,so I hope its answer was incorrect and mine right.
Thank you.
#include<stdio.h>
#include<conio.h>
int n,r=1,s1[4][16],s2[4][16],s3[4][16],s4[4][16],s5[4][16],s6[4][16],s7[4][16],
s8[4][16],k[56],k1[64],bl[32],br[32],b1[64],b2[64],s[48],b3[48],
t[48],i,count=0,br1[32],k2[56],k3[48],br2[32];
void main()
{
clrscr();
int sbox(int,int,int,int),snum[8],btemp[32];
int sr1,sr2,sr3,sr4,sr5,sr6,sr7,sr8,sc1,sc2,sc3,sc4,sc5,sc6,sc7,sc8;
void sl();
void rh();
int row(int,int);
void bindec(int);
void p1();

s1[0][0]=14;s1[0][1]=4;s1[0][2]=13;s1[0][3]=1;s1[0][4]=2;s1[0][5]=15;s1[0][6]=11;
s1[0][7]=8;s1[0][8]=3;s1[0][9]=10;s1[0][10]=6;s1[0][11]=12;s1[0][12]=5;
s1[0][13]=9;s1[0][14]=0;s1[0][15]=7;
s1[1][0]=0;s1[1][1]=15;s1[1][2]=7;s1[1][3]=4;
s1[1][4]=14;s1[1][5]=2;s1[1][6]=13;s1[1][7]=1;s1[1][8]=10;s1[1][9]=6;s1[1][10]=12;
s1[1][11]=11;s1[1][12]=9;s1[1][13]=5;s1[1][14]=3;s1[1][15]=8;
s1[2][0]=4;s1[2][1]=1;s1[2][2]=14;s1[2][3]=8;s1[2][4]=13;s1[2][5]=6;s1[2][6]=2;
s1[2][7]=11;s1[2][8]=15;s1[2][9]=12;s1[2][10]=9;s1[2][11]=7;s1[2][12]=3;
s1[2][13]=10;s1[2][14]=5;s1[2][15]=0;s1[3][0]=15;s1[3][1]=12;s1[3][2]=8;
s1[3][3]=2;s1[3][4]=4;s1[3][5]=9;s1[3][6]=1;s1[3][7]=7;s1[3][8]=5;s1[3][9]=11;
s1[3][10]=3;s1[3][11]=14;s1[3][12]=10;s1[3][13]=0;s1[3][14]=6;
s1[3][15]=13;

s2[0][0]=5;s2[0][1]=1;s2[0][2]=8;s2[0][3]=14;s2[0][4]=6;s1[0][5]=11;s2[0][6]=3;
s2[0][7]=4;s2[0][8]=9;s2[0][9]=7;s2[0][10]=2;s2[0][11]=13;s2[0][12]=12;s2[0][13]=0;
s2[0][14]=5;s2[0][15]=10;s2[1][0]=3;s2[1][1]=13;s2[1][2]=4;s2[1][3]=7;s2[1][4]=15;
s2[1][5]=2;s2[1][6]=8;s2[1][7]=14;s2[1][8]=12;s2[1][9]=0;s2[1][10]=1;s2[1][11]=10;
s2[1][12]=6;s2[1][13]=9;s2[1][14]=11;s2[1][15]=5;s2[2][0]=0;s2[2][1]=14;
s2[2][2]=7;s2[2][3]=11;s2[2][4]=10;s2[2][5]=4;s2[2][6]=13;s2[2][7]=1;s2[2][8]=5;
s2[2][9]=8;s2[2][10]=12;s2[2][11]=6;s2[2][12]=9;s2[2][13]=3;s2[2][14]=2;s2[2][15]=15;
s2[3][0]=13;s2[3][1]=8;s2[3][2]=10;s2[3][3]=1;s2[3][4]=3;s2[3][5]=15;s2[3][6]=4;
s2[3][7]=2;s2[3][8]=11;s2[3][9]=6;s2[3][10]=7;s2[3][11]=12;s2[3][12]=0;s2[3][13]=5;
s2[3][14]=14;s2[3][15]=9;

s3[0][0]=10;s3[0][1]=0;s3[0][2]=9;s3[0][3]=14;s3[0][4]=6;s3[0][5]=3;s3[0][6]=15;
s3[0][7]=5;s3[0][8]=1;s3[0][9]=13;s3[0][10]=12;s3[0][11]=7;s3[0][12]=11;s3[0][13]=4;
s3[0][14]=2;s3[0][15]=8;s3[1][0]=13;s3[1][1]=7;s3[1][2]=0;s3[1][3]=9;s3[1][4]=3;
s3[1][5]=4;s3[1][6]=6;s3[1][7]=10;s3[1][8]=2;s3[1][9]=8;s3[1][10]=5;s3[1][11]=14;
s3[1][12]=12;s3[1][13]=11;s3[1][14]=15;
s3[1][15]=1;s3[2][0]=13;s3[2][1]=6;s3[2][2]=4;s3[2][3]=9;s3[2][4]=8;
s3[2][5]=15;s3[2][6]=3;s3[2][7]=0;
s3[2][8]=11;s3[2][9]=1;s3[2][10]=2;s3[2][11]=12;s3[2][12]=5;
s3[2][13]=10;s3[2][14]=14;s3[2][15]=7;s3[3][0]=1;s3[3][1]=10;s3[3][2]=13;
s3[3][3]=0;s3[3][4]=6;s3[3][5]=9;s3[3][6]=8;s3[3][7]=7;s3[3][8]=4;s3[3][9]=15;
s3[3][10]=14;s3[3][11]=3;
s3[3][12]=11;s3[3][13]=5;s3[3][14]=2;s3[3][15]=12;

s4[0][0]=7;s4[0][1]=13;s4[0][2]=14;s4[0][3]=3;s4[0][4]=0;s4[0][5]=6;
s4[0][6]=9;s4[0][7]=10;
s4[0][8]=1;s4[0][9]=2;s4[0][10]=8;s4[0][11]=5;s4[0][12]=11;s4[0][13]=12;
s4[0][14]=4;s4[0][15]=15;
s4[1][0]=13;s4[1][1]=8;s4[1][2]=11;s4[1][3]=5;s4[1][4]=6;s4[1][5]=15;
s4[1][6]=0;
s4[1][7]=3;s4[1][8]=4;s4[1][9]=7;s4[1][10]=2;
s4[1][11]=12;s4[1][12]=1;s4[1][13]=10;s4[1][14]=14;
s4[1][15]=9;s4[2][0]=10;s4[2][1]=6;s4[2][2]=9;s4[2][3]=0;
s4[2][4]=12;s4[2][5]=11;
s4[2][6]=7;s4[2][7]=13;s4[2][8]=15;s4[2][9]=1;s4[2][10]=3;s4[2][11]=14;
s4[2][12]=5;
s4[2][13]=2;s4[2][14]=8;s4[2][15]=4;
s4[3][0]=3;s4[3][1]=15;s4[3][2]=0;s4[3][3]=6;s4[3][4]=10;
s4[3][5]=1;s4[3][6]=13;s4[3][7]=8;s4[3][8]=9;s4[3][9]=4;
s4[3][10]=5;s4[3][11]=11;
s4[3][12]=12;s4[3][13]=7;s4[3][14]=2;s4[3][15]=14;

s5[0][0]=2;s5[0][1]=12;s5[0][2]=4;
s5[0][3]=1;s5[0][4]=7;s5[0][5]=10;s5[0][6]=11;s5[0][7]=6;s5[0][8]=8;s5[0][9]=5;
s5[0][10]=3;s5[0][11]=15;s5[0][12]=13;s5[0][13]=0;s5[0][14]=14;s5[0][15]=9;
s5[1][0]=14;s5[1][1]=11;s5[1][2]=2;
s5[1][3]=12;s5[1][4]=4;s5[1][5]=7;s5[1][6]=13;s5[1][7]=1;
s5[1][8]=5;s5[1][9]=0;s5[1][10]=15;s5[1][11]=10;s5[1][12]=3;s5[1][13]=9;
s5[1][14]=8;s5[1][15]=6;s5[2][0]=4;s5[2][1]=2;s5[2][2]=1;s5[2][3]=11;
s5[2][4]=10;s5[2][5]=13;s5[2][6]=7;s5[2][7]=8;
s5[2][8]=15;s5[2][9]=9;s5[2][10]=12;s5[2][11]=5;s5[2][12]=6;
s5[2][13]=3;s5[2][14]=0;s5[2][15]=14;s5[3][0]=11;s5[3][1]=8;
s5[3][2]=12;s5[3][3]=7;s5[3][4]=1;s5[3][5]=14;s5[3][6]=2;s5[3][7]=13;
s5[3][8]=6;s5[3][9]=15;s5[3][10]=0;s5[3][11]=9;
s5[3][12]=10;s5[3][13]=4;s5[3][14]=5;s5[3][15]=3;

s6[0][0]=12;s6[0][1]=1;s6[0][2]=10;s6[0][3]=15;s6[0][4]=9;s6[0][5]=2;s6[0][6]=6;s6[0][7]=8;
s6[0][8]=0;s6[0][9]=13;s6[0][10]=3;s6[0][11]=4;s6[0][12]=14;s6[0][13]=7;s6[0][14]=5;s6[0][15]=11;
s6[1][0]=10;s6[1][1]=15;s6[1][2]=4;s6[1][3]=2;s6[1][4]=7;s6[1][5]=12;s6[1][6]=9;s6[1][7]=5;
s6[1][8]=6;s6[1][9]=1;s6[1][10]=13;s6[1][11]=14;s6[1][12]=0;s6[1][13]=11;s6[1][14]=3;s6[1][15]=8;
s6[2][0]=9;s6[2][1]=14;s6[2][2]=15;s6[2][3]=5;s6[2][4]=2;s6[2][5]=8;s6[2][6]=12;s6[2][7]=3;
s6[2][8]=7;s6[2][9]=0;s6[2][10]=4;s6[2][11]=10;s6[2][12]=1;s6[2][13]=13;s6[2][14]=11;s6[2][15]=6;
s6[3][0]=4;s6[3][1]=3;s6[3][2]=2;s6[3][3]=12;s6[3][4]=9;s6[3][5]=5;s6[3][6]=15;s6[3][7]=10;
s6[3][8]=11;s6[3][9]=14;s6[3][10]=1;s6[3][11]=7;s6[3][12]=6;s6[3][13]=0;s6[3][14]=8;s6[3][15]=13;

s7[0][0]=4;s7[0][1]=11;s7[0][2]=2;s7[0][3]=14;s7[0][4]=15;s7[0][5]=0;s7[0][6]=8;s7[0][7]=13;
s7[0][8]=3;s7[0][9]=12;s7[0][10]=9;s7[0][11]=7;s7[0][12]=5;s7[0][13]=10;s7[0][14]=6;s7[0][15]=1;
s7[1][0]=13;s7[1][1]=0;s7[1][2]=11;s7[1][3]=7;s7[1][4]=4;s7[1][5]=9;s7[1][6]=1;s7[1][7]=10;
s7[1][8]=14;s7[1][9]=3;s7[1][10]=5;s7[1][11]=12;s7[1][12]=2;s7[1][13]=15;s7[1][14]=8;s7[1][15]=6;
s7[2][0]=1;s7[2][1]=4;s7[2][2]=11;s7[2][3]=13;s7[2][4]=12;s7[2][5]=3;s7[2][6]=7;s7[2][7]=14;
s7[2][8]=10;s7[2][9]=15;s7[2][10]=6;s7[2][11]=8;s7[2][12]=0;s7[2][13]=5;s7[2][14]=9;s7[2][15]=12;
s7[3][0]=6;s7[3][1]=11;s7[3][2]=13;s7[3][3]=8;s7[3][4]=1;s7[3][5]=4;s7[3][6]=10;s7[3][7]=7;
s7[3][8]=9;s7[3][9]=5;s7[3][10]=0;s7[3][11]=15;s7[3][12]=14;s7[3][13]=2;s7[3][14]=3;s7[3][15]=12;

s8[0][0]=13;s8[0][1]=2;s8[0][2]=8;s8[0][3]=4;s8[0][4]=6;s8[0][5]=15;s8[0][6]=11;s8[0][7]=1;
s8[0][8]=10;s8[0][9]=9;s8[0][10]=3;s8[0][11]=14;s8[0][12]=5;s8[0][13]=0;s8[0][14]=12;s8[0][15]=7;
s8[1][0]=1;s8[1][1]=15;s8[1][2]=13;s8[1][3]=8;s8[1][4]=10;s8[1][5]=3;s8[1][6]=7;s8[1][7]=4;
s8[1][8]=12;s8[1][9]=5;s8[1][10]=6;s8[1][11]=11;s8[1][12]=0;s8[1][13]=14;s8[1][14]=9;s8[1][15]=2;
s8[2][0]=7;s8[2][1]=11;s8[2][2]=4;s8[2][3]=1;s8[2][4]=9;s8[2][5]=12;s8[2][6]=14;s8[2][7]=2;
s8[2][8]=0;s8[2][9]=6;s8[2][10]=10;s8[2][11]=13;s8[2][12]=15;s8[2][13]=3;s8[2][14]=5;s8[2][15]=8;
s8[3][0]=2;s8[3][1]=1;s8[3][2]=14;s8[3][3]=7;s8[3][4]=4;s8[3][5]=10;s8[3][6]=8;s8[3][7]=13;
s8[3][8]=15;s8[3][9]=12;s8[3][10]=9;s8[3][11]=0;s8[3][12]=3;s8[3][13]=5;s8[3][14]=6;s8[3][15]=11;
printf("Enter 64-bit binary data ");
for(int i=0;i<64;i++)
{
g:
{
scanf("%d",&b1[i]);
if(b1[i]>1||b1[i]<0)
{
printf("Enter binary data only : ");
goto g;
}}}
printf("Enter the 56-bit key\n[Key length is 64 bits,but 8 are\nreserved for parity checking ");
for(i=0;i<56;i++)
{
g1:
{
scanf("%d",&k[i]);
if(k[i]>1||k[i]<0)
{
printf("Enter binary data only : ");
goto g1;
}}}
for(i=0;i<64;i++)
b2[i]=b1[i]; //Initial permutation of data.
b1[0]=b2[57];b1[1]=b2[49];b1[2]=b2[41];b1[3]=b2[33];b1[4]=b2[25];b1[5]=b2[17];
b1[6]=b2[9];b1[7]=b2[1];b1[8]=b2[59];b1[9]=b2[51];b1[10]=b2[43];b1[11]=b2[35];
b1[12]=b2[27];b1[13]=b2[19];b1[14]=b2[11];b1[15]=b2[3];b1[16]=b2[61];
b1[17]=b2[53];b1[18]=b2[45];b1[19]=b2[37];b1[20]=b2[29];b1[21]=b2[21];
b1[22]=b2[13];b1[23]=b2[5];b1[24]=b2[63];b1[25]=b2[55];b1[26]=b2[47];
b1[27]=b2[39];b1[28]=b2[31];b1[29]=b2[23];b1[30]=b2[15];b1[31]=b2[7];
b1[32]=b2[56];b1[33]=b2[48];b1[34]=b2[40];b1[35]=b2[32];b1[36]=b2[24];
b1[37]=b2[16];b1[38]=b2[8];b1[39]=b2[0];b1[40]=b2[58];b1[41]=b2[50];
b1[42]=b2[42];b1[43]=b2[34];b1[44]=b2[26];b1[45]=b2[18];b1[46]=b2[10];
b1[47]=b2[2];b1[48]=b2[60];b1[49]=b2[52];b1[50]=b2[44];b1[51]=b2[36];
b1[52]=b2[28];b1[53]=b2[20];b1[54]=b2[12];b1[55]=b2[4];b1[56]=b2[62];
b1[57]=b2[54];b1[58]=b2[46];b1[59]=b2[38];b1[60]=b2[30];b1[61]=b2[22];
b1[62]=b2[14];b1[63]=b2[6];
for(i=0;i<56;i++)
k1[i]=k[i]; //Converting 64-bit key to 56-bit key.
k2[0]=k1[57];k2[1]=k1[49];k2[2]=k1[41];k2[3]=k1[33];k2[4]=k1[25];k2[5]=k1[17];
k2[6]=k1[9];k2[7]=k1[1];k2[8]=k1[58];k2[9]=k1[50];k2[10]=k1[42];k2[11]=k1[34];
k2[12]=k1[26];k2[13]=k1[18];k2[14]=k1[10];k2[15]=k1[2];k2[16]=k1[59];k2[17]=k1[51];
k2[18]=k1[43];k2[19]=k1[35];k2[20]=k1[27];k2[21]=k1[19];k2[22]=k1[11];k2[23]=k1[3];
k2[24]=k1[60];k2[25]=k1[52];k2[26]=k1[44];k2[27]=k1[36];k2[28]=k1[63];k2[29]=k1[55];
k2[30]=k1[47];k2[31]=k1[39];k2[32]=k1[31];k2[33]=k1[23];k2[34]=k1[15];k2[35]=k1[7];
k2[36]=k1[62];k2[37]=k1[54];k2[38]=k1[46];k2[39]=k1[38];k2[40]=k1[30];k2[41]=k1[22];
k2[42]=k1[14];k2[43]=k1[6];k2[44]=k1[61];k2[45]=k1[53];k2[46]=k1[45];k2[47]=k1[37];
k2[48]=k1[29];k2[49]=k1[21];k2[50]=k1[13];k2[51]=k1[5];k2[52]=k1[28];k2[53]=k1[20];
k2[54]=k1[12];k2[55]=k1[4];

for(i=0;i<32;i++) //Breaking the initially permuted
bl[i]=b1[i]; //data bits in right-half
for(i=32;i<64;i++) //and left-half respectively
br[i-32]=b1[i];

for(r=1;r<=16;r++)
{
rh();
sl();
printf("Round %d :\n",r);
for(i=0;i<56;i++)
printf("%d ",k3[i]);
for(i=0;i<48;i++)
{
s[i]=b3[i]+k3[i]; //X-OR of Expanded Right-side of data and compressed
if(s[i]==2) //key.
s[i]=0;
}
for(i=0;i<48;i++)
t[i]=s[i];
printf("\n\n");
getch();
sr1=row(t[0],t[5]);
sr2=row(t[6],t[11]);
sr3=row(t[12],t[17]);
sr4=row(t[18],t[23]);
sr5=row(t[24],t[29]);
sr6=row(t[30],t[35]);
sr7=row(t[36],t[41]);
sr8=row(t[42],t[47]);
sc1=sbox(1,2,3,4);
sc2=sbox(7,8,9,10);
sc3=sbox(13,14,15,16);
sc4=sbox(19,20,21,22);
sc5=sbox(25,26,27,28);
sc6=sbox(31,32,33,34);
sc7=sbox(37,38,39,40);
sc8=sbox(43,44,45,46);
snum[0]=s1[sr1][sc1];
snum[1]=s2[sr2][sc2];
snum[2]=s3[sr3][sc3];
snum[3]=s4[sr4][sc4];
snum[4]=s5[sr5][sc5];
snum[5]=s6[sr6][sc6];
snum[6]=s7[sr7][sc7];
snum[7]=s8[sr8][sc8];
bindec(snum[0]);
bindec(snum[1]);
bindec(snum[2]);
bindec(snum[3]);
bindec(snum[4]);
bindec(snum[5]);
bindec(snum[6]);
bindec(snum[7]);
p1();
for(i=0;i<32;i++)
{
btemp[i]=bl[i]+br1[i];
if(btemp[i]==2)
btemp[i]=0;
}
for(i=0;i<32;i++)
bl[i]=br[i];
for(i=0;i<32;i++)
br[i]=btemp[i];
count=0;
}
for(i=0;i<32;i++)
b1[i]=bl[i];
for(i=0;i<32;i++)
b1[i+32]=br[i];
for(i=0;i<64;i++)
b2[i]=b1[i];
//Final permutation to obtain ciphertext
b1[0]=b2[40];b1[1]=b2[8];b1[2]=b2[48];b1[3]=b2[16];b1[4]=b2[56];
b1[5]=b2[24];b1[6]=b2[64];b1[7]=b2[32];b1[8]=b2[39];b1[9]=b2[7];
b1[10]=b2[47];b1[11]=b2[15];b1[12]=b2[55];b1[13]=b2[23];b1[14]=b2[63];
b1[15]=b2[31];b1[16]=b2[38];b1[17]=b2[6];b1[18]=b2[46];b1[19]=b2[14];
b1[20]=b2[54];b1[21]=b2[22];b1[22]=b2[62];b1[23]=b2[30];b1[24]=b2[37];
b1[25]=b2[5];b1[26]=b2[45];b1[27]=b2[13];b1[28]=b2[53];b1[29]=b2[21];
b1[30]=b2[61];b1[31]=b2[29];b1[32]=b2[36];b1[33]=b2[4];b1[34]=b2[44];
b1[35]=b2[12];b1[36]=b2[52];b1[37]=b2[20];b1[38]=b2[60];b1[39]=b2[28];
b1[40]=b2[35];b1[41]=b2[3];b1[42]=b2[43];b1[43]=b2[11];b1[44]=b2[51];
b1[45]=b2[19];b1[46]=b2[59];b1[47]=b2[27];b1[48]=b2[34];b1[49]=b2[2];
b1[50]=b2[42];b1[51]=b2[10];b1[52]=b2[50];b1[53]=b2[18];b1[54]=b2[58];
b1[55]=b2[26];b1[56]=b2[33];b1[57]=b2[1];b1[58]=b2[41];b1[59]=b2[9];
b1[60]=b2[49];b1[61]=b2[17];b1[62]=b2[57];b1[63]=b2[25];
printf("\n\n");
for(i=0;i<32;i++)
printf("%d ",bl[i]);
printf("\n");
for(i=0;i<32;i++)
printf("%d ",br[i]);
printf("\n\n***********\n");
printf("The encrypted 64-bit data is as follows :\n");
for(i=0;i<64;i++)
printf("%d ",b1[i]);
getch();
}
void rh()
{ //Expansion permutation of Right-half of data.
b3[0]=br[31];b3[1]=br[0];b3[2]=br[1];b3[3]=br[2];b3[4]=br[3];b3[5]=br[4];
b3[6]=br[3];b3[7]=br[4];b3[8]=br[5];b3[9]=br[6];b3[10]=br[7];b3[11]=br[8];
b3[12]=br[7];b3[13]=br[8];b3[14]=br[9];b3[15]=br[10];b3[16]=br[11];
b3[17]=br[12];b3[18]=br[11];b3[19]=br[12];b3[20]=br[13];b3[21]=br[14];
b3[22]=br[15];b3[23]=br[16];b3[24]=br[15];b3[25]=br[16];b3[26]=br[17];
b3[27]=br[18];b3[28]=br[19];b3[29]=br[20];b3[30]=br[19];b3[31]=br[20];
b3[32]=br[21];b3[33]=br[22];b3[34]=br[23];b3[35]=br[24];b3[36]=br[23];
b3[37]=br[24];b3[38]=br[25];b3[39]=br[26];b3[40]=br[27];b3[41]=br[28];
b3[42]=br[27];b3[43]=br[28];b3[44]=br[29];b3[45]=br[30];b3[46]=br[31];
b3[47]=br[0];
}
void sl()
{
int temp;
temp=k2[0];
for(i=0;i<27;i++)
k2[i]=k2[i+1];
k2[27]=temp;

if(r==3||r==4||r==5||r==6||r==7||r==8||r==10||r==11||r==12||r==13||r==14||r==15)
{
temp=k2[0];
for(i=0;i<27;i++)
k2[i]=k2[i+1];
k2[27]=temp;

}
temp=k2[28];
for(i=28;i<55;i++)
k2[i]=k2[i+1];
k2[55]=temp;

if(r==3||r==4||r==5||r==6||r==7||r==8||r==10||r==11||r==12||r==13||r==14||r==15)
{
temp=k2[28];
for(i=28;i<55;i++)
k2[i]=k2[i+1];
k2[55]=temp;

} //Compression permutation of the key.
k3[0]=k2[13];k3[1]=k2[16];k3[2]=k2[10];k3[3]=k2[23];k3[4]=k2[0];k3[5]=k2[4];k3[6]=k2[2];
k3[7]=k2[27];k3[8]=k2[14];k3[9]=k2[5];k3[10]=k2[20];k3[11]=k2[9];k3[12]=k2[22];
k3[13]=k2[18];k3[14]=k2[11];k3[15]=k2[3];k3[16]=k2[25];k3[17]=k2[7];k3[18]=k2[15];
k3[19]=k2[6];k3[20]=k2[26];k3[21]=k2[19];k3[22]=k2[12];k3[23]=k2[1];k3[24]=k2[40];
k3[25]=k2[51];k3[26]=k2[30];k3[27]=k2[36];k3[28]=k2[46];k3[29]=k2[54];k3[30]=k2[29];
k3[31]=k2[39];k3[32]=k2[50];k3[33]=k2[44];k3[34]=k2[32];k3[35]=k2[47];k3[36]=k2[43];
k3[37]=k2[48];k3[38]=k2[38];k3[39]=k2[55];k3[40]=k2[33];k3[41]=k2[52];k3[42]=k2[45];
k3[43]=k2[41];k3[44]=k2[49];k3[45]=k2[35];k3[46]=k2[28];k3[47]=k2[31];

} //sl() ends.


int row(int bitl,int bitr)
{
int rown;
/**/
t[bitr]=t[bitr]*1;
t[bitl]=t[bitr]*2;
rown=t[bitr]+t[bitl];
return(rown);
}
int sbox(int p,int q,int r,int s)
{
int col;
t[s]=t[s]*1;
t[r]=t[r]*2;
t[q]=t[q]*4;
t[p]=t[p]*8;
col=t[s]+t[r]+t[q]+t[p];
/**/
return(col);
}
void bindec(int dec)
{
/**/
int vrble=3,dec1;
while(vrble!=0)
{
dec1=dec%2;
if(dec1==0)
br1[count+vrble]=0;
else
br1[count+vrble]=1;
vrble=vrble-1;
dec=dec/2;
}
count=count+4;
}
void p1()
{
for(i=0;i<32;i++) //Permutation of 32-bit output of s-boxes
br2[i]=br1[i];
br1[0]=br2[15];
br1[1]=br2[6];
br1[2]=br2[19];
br1[3]=br2[20];
br1[4]=br2[28];
br1[5]=br2[11];
br1[6]=br2[27];
br1[7]=br2[16];
br1[8]=br2[0];
br1[9]=br2[14];
br1[10]=br2[22];
br1[11]=br2[25];
br1[12]=br2[4];
br1[13]=br2[17];
br1[14]=br2[30];
br1[15]=br2[9];
br1[16]=br2[1];
br1[17]=br2[7];
br1[18]=br2[23];
br1[19]=br2[13];
br1[20]=br2[31];
br1[21]=br2[26];
br1[22]=br2[2];
br1[23]=br2[8];
br1[24]=br2[18];
br1[25]=br2[12];
br1[26]=br2[29];
br1[27]=br2[5];
br1[28]=br2[21];
br1[29]=br2[10];
br1[30]=br2[3];
br1[31]=br2[24];
}