[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: tripple des
> >
> > Crypto question:
> > why was the following chosen for tripple DES :
> > EN(DE(EN(data,k1),k2),k3);
>
> In fact, "triple" DES goes three times through the engine, but only uses
> two keys:
>
> EN(DE(EN(data,k1),k2),k1)
>
hmm... I am using d3des which I had assumed uses 'tripple-DES'.
at any rate, I used the Ddes() function, printed its output,
then used the des() function 3 times and prined its output. They
matched up which suggests that d3des uses the method I posted at
the top.
> My understanding is that this was chosen for hardware implementations
> because it is equivalent to single DES when k1 = k2. This is important,
> of course, when some people you want to talk to are still using single DES
> and the hardware is hard to reconfigure.
interesting. Wouldnt the first scheme do the same? for k1=k2, and
k3 = any key ?
(or k2=k3 and k1 = any key)
> Joe
> --
> Joe Thomas <[email protected]> Say no to the Wiretap Chip!
-- main.c, compares Ddes output and des output ---------
#include "d3des.h"
unsigned long enkey[96],dekey[96];
unsigned long e1[32],e2[32],e3[32];
unsigned long d1[32],d2[32],d3[32];
main()
{
char *a,b[100],*k,*k1,*k2,*k3;
strcpy(b,"this is a test");
k="testing123423456789212345678";
k1="testing1";
k2="23423456";
k3="78921234";
deskey(k1,0); cpkey(e1);
deskey(k2,1); cpkey(d2);
deskey(k3,0); cpkey(e3);
des3key(k,0); cp3key(enkey); /* set up long keys , encrypt */
des3key(k,1); cp3key(dekey); /* decrypt */
use3key(enkey); Ddes(b,b); /* encrypt b */
write(1,b,16);
use3key(dekey); Ddes(b,b); /* decrypt b */
write(1,b,16);
usekey(e1); des(b,b);
usekey(d2); des(b,b);
usekey(e3); des(b,b);
write(1,b,16);
}