Vous êtes sur la page 1sur 2

#include <stdio.

h>
#include <stdlib.h>
int toBin(int n)
{
int bn,s,c;
bn=s=c=0;
for(;n>0;n/=2)
{
s=(s*10)+(n%2);
if(s==0) c++;
}
for(;s>0;s/=10)
bn=bn*10+(s%10);
for(;c>0;c--)
bn*=10;
return bn;
}
void main()
{
int l[4],r[4],nr[4];
int k[3][4],i,sb[4][4],j,r1,sbo,c1;
printf( "Enter 4-bit low order");
for(i=0;i<4;i++)
scanf("%d",&l[i]);
printf( "Enter 4-bit high order");
for(i=0;i<4;i++)
scanf("%d",&r[i]);
printf( "Enter three 4-bit keys");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&k[i][j]);
printf( "Enter S-Box data:");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&sb[i][j]);
for(j=0;j<3;j++)
{
nr[0]=r[0];
nr[1]=r[1];
nr[2]=r[2];
nr[3]=r[3];
for(i=0;i<4;i++)
nr[i]^=k[j][i];
r1=(nr[0]*2)+nr[3];
c1=(nr[1]*2)+nr[2];
sbo=toBin(sb[r1][c1]);

for(i=3;i>=0;i--,(sbo/=10))
nr[i]=(sbo%10);
for(i=0;i<4;i++)
nr[i]=nr[i]^l[i];
for(i=0;i<4;i++)
l[i]=r[i],r[i]=nr[i];
}
for(i=0;i<4;i++)
printf("%d",r[i]);
for(i=0;i<4;i++)
printf("%d",l[i]);
}

Vous aimerez peut-être aussi