magnumripper/JohnTheRipper — pull request #715 by gurnec (2014-08-13 18:34:37+00:00)
Title: For Bitcoin format, use JtR's SSE variant of SHA-512 instead of the ossl one

This PR provides a nice little speed improvement to the Bitcoin format. Here are the results on my PC (an aging quad-core w/SSE4):

Old version, using ossl `EVP_BytesToKey()`:

Will run 4 OpenMP threads
Benchmarking: Bitcoin [SHA512 AES 64/64 OpenSSL]... (4xOMP) DONE
Raw: 40.4 c/s

New version, using `SHA512_Update()` when SSE is unavailable:

Will run 4 OpenMP threads
Benchmarking: Bitcoin [SHA512 AES 64/64 OpenSSL]... (4xOMP) DONE
Raw: 43.4 c/s

New version, using `SSESHA512body()`:

Will run 4 OpenMP threads
Benchmarking: Bitcoin [SHA512 AES 128/128 SSE4.1 2x]... (4xOMP) DONE
Raw: 78.2 c/s

I'm not really familiar with JtR's codebase, so I may well have made a mistake somewhere... in particular, I didn't include any support for SHA512_SSE_PARA which I hope isn't a problem given that it's not currently supported elsewhere, but I could be wrong.