Re: The market of ASICs (One GigaKey / Second?)

jbass-/[email protected]
Newsgroups gmane.comp.distributed-net.hardware
Message-ID <[email protected]>
Hi Guys,

Here is RC5Test.c which goes with the RC5Gen.c tool I previously
posted. The RC5Gen tool outputs an extra "]" that needs to be
removed.

The VHDL tool also created as many L terms as S terms, so the
wires didn't have any extra logic, plus 26 E terms, and function
calls for the 26 bit shift registers.

John

/*
 * Testbench for RC5 core
 * John L. Bass, Copyright 2001
 * compiles as: cc -O3 -DTest40 RC5Test.c
 */
#define RB(x) \
	(((x) >> 24)  | (((x) >>  8) & 0x0000FF00) | \
	 (((x) <<  8) & 0x00FF0000) | ((x) << 24))

#define ROTL3(x) ((x << 3) | (x >> 29))
#define ROTL(x,n) (((x) << (n % 32)) | ((x) >> (32-(n % 32))))

main()
{
	unsigned long L0, L1, E0, E1;
	unsigned long S26, S27, S28, S29;
	unsigned long S30, S31, S32, S33, S34, S35, S36, S37, S38, S39;
	unsigned long S40, S41, S42, S43, S44, S45, S46, S47, S48, S49;
	unsigned long S50, S51, S52, S53, S54, S55, S56, S57, S58, S59;
	unsigned long S60, S61, S62, S63, S64, S65, S66, S67, S68, S69;
	unsigned long S70, S71, S72, S73, S74, S75, S76, S77, S78, S79;
	unsigned long S80, S81, S82, S83, S84, S85, S86, S87, S88, S89;
	unsigned long S90, S91, S92, S93, S94, S95, S96, S97, S98, S99;
	unsigned long S100, S101, S102, S103;
	unsigned long key0 = 0x0;
	unsigned long key1 = 0x0;

#ifdef Test40
	/* plain text is: 54 68 65 20 75 6e 6b 6e */
	/*    IV text is: f6 75 17 1a 59 b7 ea d0 */
	unsigned long plain0 = 0x20656854 ^ 0x1a1775f6;
	unsigned long plain1 = 0x6e6b6e75 ^ 0xd0eab759;

	/* cypher text is: b4 0a 53 88 b1 38 82 ad */
	unsigned long cypher0 = 0x88530ab4;
	unsigned long cypher1 = 0xad8238b1;

	unsigned long long max = 0xffffffffff;
	unsigned long long count = 0x43d2000000;
#endif

#ifdef Test48
	/* plain text is: 54 68 65 20 75 6e 6b 6e */
	/*    IV text is: 23 8c 3c c9 b0 fd 9f 9e */
	unsigned long plain0 = 0x20656854 ^ 0xc93c8c23;
	unsigned long plain1 = 0x6e6b6e75 ^ 0x9e9ffdb0;

	/* cypher text is: bf 88 86 d2 a9 50 84 1c */
	unsigned long cypher0 = 0xd28688bf;
	unsigned long cypher1 = 0x1c8450a9;

	unsigned long long max = 0xffffffffffff;
	unsigned long long count = 0x510678040000;
#endif

#ifdef Test56
	/* plain text is: 54 68 65 20 75 6e 6b 6e */
	/*    IV text is: fb b2 e9 e4 12 d0 ec bc */
	unsigned long plain0 = 0x20656854 ^ 0xe4e9b2fb;
	unsigned long plain1 = 0x6e6b6e75 ^ 0xbcecd012;

	/* cypher text is: 39 de 1b 56 3f 1d 5c 25 */
	unsigned long cypher0 = 0x561bde39;
	unsigned long cypher1 = 0x255c1d3f;

	unsigned long long max = 0xffffffffffffff;
	/*    key is: 14 11 b3 5a 9a 98 da */
	unsigned long long count = 0xda989a5a000000;
#endif

#ifdef Test64
	/* plain text is: 54 68 65 20 75 6e 6b 6e */
	/*    IV text is: d9 a5 39 f8 c1 78 1f c4 */
	unsigned long plain0 = 0x20656854 ^ 0xf839a5d9;
	unsigned long plain1 = 0x6e6b6e75 ^ 0xc41f78c1;

	/* cypher text is: 41 e0 4b b7 29 ef 6d 49 */
	unsigned long cypher0 = 0xb74be041;
	unsigned long cypher1 = 0x496def29;

	unsigned long long max = 0xffffffffffffffff;
	/*    key is: 82 e5 1b 9f 9c c7 18 f9 */
	unsigned long long count = 0xf918c79c9f000000;
#endif

	/*
	 * constants produced by round 0
	 * 	const RC5_WORD P = 0xB7E15163;
	 * 	const RC5_WORD Q = 0x9E3779B9;
	 *	S[0] = P;
	 *	for (i=1;i<26;i++)
	 *		S[i] = S[i-1] + Q;
	 */

	while (++count < max)
	{
if((count & 0xfffff) == 0) { printf("0x%08x  0x%08x\r",RB(count&0xffffffff), RB(count>>32)); fflush(0); }

#include "RC5Core.c"

                /* test for found key */
		if (cypher0 == E0 && cypher1 == E1)
			break;
	}
	printf("0x%08x  0x%08x\n",RB(key0), RB(key1));
}
_______________________________________________
Hardware mailing list
Hardware-Ra3b/QYEcJ3d140v2zMXi0fjHoOT/h/[email protected]
http://lists.distributed.net/mailman/listinfo/hardware
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.