Professional Documents
Culture Documents
/*
Author: Rohit Saini
Input:
64 bit plain data
128 bit key
Output:
64 bit cipher data
*/
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{
int i=0,j,k=0,h=0,t=0,l,flag,fl=0;
unsigned int subkey[8]={0};
clrscr();
flag=0;
for(j=0;j<8;j++)
{
subkey[h]=key[t++];
h=(h++)%6;
if(fl++==7)
{
leftRotate(key);
flag=1;fl=0;
}
}
else
{
subkey[h]=key[t%8];
t++;
h=(h++)%6;
fl++;
}
t=t%8;
}
h=0;
flag=0;
mul(1,msg[0],subkey[0]);
add(2,msg[1],subkey[1]);
add(3,msg[2],subkey[2]);
mul(4,msg[3],subkey[3]);
xor(5,a[1],a[3]);
xor(6,a[2],a[4]);
mul(7,a[5],subkey[4]);
add(8,a[6],a[7]);
mul(9,a[8],subkey[5]);
add(10,a[7],a[9]);
xor(11,a[1],a[9]);
xor(12,a[3],a[9]);
xor(13,a[2],a[10]);
xor(14,a[4],a[10]);
}
leftRotate(key);
for(t=t%8;t<8 && h<4;)
{
subkey[h]=key[t%8];
t++;
}
mul(1,msg[0],subkey[0]);
add(2,msg[1],subkey[1]);
add(3,msg[2],subkey[2]);
mul(4,msg[3],subkey[3]);