|
Message-ID: <20110512100653.GA12601@openwall.com> Date: Thu, 12 May 2011 14:06:53 +0400 From: Solar Designer <solar@...nwall.com> To: crypt-dev@...ts.openwall.com Subject: KDF based on bitslice DES (was: alternative approach) On Thu, May 12, 2011 at 01:51:54PM +0400, Solar Designer wrote: > ...I just found some pseudo-code for a bitslice DES based crypt(3) like > function, which I wrote in 1998 (according to the file timestamp). I'll > post it separately. Here it is, with no changes: --- int N = sizeof(word) * 8; word B[64], K[56]; int rounds, i; int64 salt; int56 k; int64 hash[2]; decode(&rounds, &salt); k = get7(); for (i = 0; i < N; i++) { B{i} = salt * N | i; K{i} = k; } do { bitslice(&B, K); k = get7(); for (i = 0; i < N; i++) K{i} = k ^ B{i}; } while (k); for (i = 0; i < rounds; i++) bitslice(&B, K); hash[0] = 0; for (i = 0; i < N; i++) hash[0] ^= B{i}; bitslice(&B, K); hash[1] = 0; for (i = 0; i < N; i++) hash[1] ^= B{i}; encode(rounds, salt, hash); --- The curly braces refer to bit layers, e.g. B{i} means i'th bit of every element of B[]. gets7() reads the next 7 characters of the input password/passphrase. bitslice() is a bitslice implementation of DES. Since the same value of K is used in multiple calls to bitslice(), the DES key schedule setup may actually be out of the loop. This is not shown above for simplicity. Alexander
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.