Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Mon, 31 Jan 2011 15:32:25 +0000
From: Freddie Witherden <>
Subject: Re: FreeBSD crypt() / MD5-crypt implementation question

On 31/01/11 15:13, M. Sprengers wrote:
> I used Poul-Hennig Kamp's code to produce a CUDA compatible implementation of MD5-crypt that can perform exhaustive search on GPU's (which already performs 30 times faster than an equally priced CPU). However, when I tried to unravel the FreeBSD MD5 implementation in John the Ripper (more specifically, 'void MD5_std_crypt()' in MD5_std.c), I could not determine why you only need 500 iterations (instead of 1000) to calculate the final hash. I searched for some design/implementation documents/comments in this mailing list, but without success. Can somebody explain this to me? 

May I suggest you take a look at the SSE2 intrinsics version of the
FreeBSD MD5 crypt function.  It can be found in the
john-1.7.6-jumbo6-intrinsics-2.diff.gz patch set.  While the
implementation is not ideal (I am reasonably confident that you can get
20% out of it without too much work) it does perform better than the
built in MD5 crypt function.

Of course, if you're benchmarking against non x86 CPUs this is not relevant.

As for why 500 (as opposed to 1000) iterations are used: I /suspect/
that the loop has been 2x unrolled.

Polemically yours, Freddie.

Download attachment "signature.asc" of type "application/pgp-signature" (199 bytes)

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.