Code Written For Engine Yards SHA1 Hashing Contest.
C Ruby
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
config
data
lib
src
README

README

This is most of the code I wrote for Enginge Yard's July 2009 SHA1 Hashing Contest.  The consumer can do about 12M/keys/core (Xeon 2.33Ghz)

It uses Amazon's SQS for distributing the work units and results. 

The processor takes 32 64-character stems (the length of a single SHA1 block).  It appends the 5 extra character suffix to each of those stems in an attempt to find a low hamming distance.

This allows us to:

1. Only perform the message expansion phase of SHA1 once per 5 character suffix for each set of 32 stems.
2. Compute 4 hashes (1 suffix added to 4 different stems) at a time using SSE2 Vectorization.
3. Precompute some of the expanded message for the suffix blocks since we know what they will look like (always 5 characters)