Date: Mon, 31 Jan 2011 15:32:25 +0000 From: Freddie Witherden <freddie@...herden.org> To: john-users@...ts.openwall.com 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.