Unix Crypt / DES Data Encryption Standard


I’m trying since few weeks to implement the unix crypt() - DES - function.

I started with the simple version of the algorithm (http://michael.dipperstein.com/crypt/crypt3.c). However I’ve poor performances : john is faster on a single CPU than on my GTX260 !

Now I’m “playing” with the Ultra Fast implementation (ufc-crypt) but I’ve some problem with memory allocation and various sync.

Did someone already have made such work ? Do you think, according to the first algorithm referenced above, the results I observed are normal or I made a mistake on the algorithm portage ? I mean : do you think such algorithm can be ported to -really- gain speed on GPU?


Start with pure DES implementation, not crypt().
DES is slow on GPU because of two main problems with it:

  1. Lookup tables
  2. Bit permutations.

So, you need to find alternative way of implementing DES on GPU.
Fortunately, this have been done already. Search for and read about bitsliced DES implementation. This can be done in GPU pretty efficiently.

My DES code shows about 90M keys/sec on 8600GTS (which translates roughly to 3.5M crypt() passwords on 8600GTS or ~20M on GTX285).