We basically chain conversions from plaintext to hashes back to plaintext. We do this on the GPU since they can do reductions relatively efficiently. The GPU can parallelize this by just doing a range of reductions together, then we look at the results that we want and sequentially chain them together.

Once these have been developed for a specific input set and hash function, they can be reused forever.

How to use

  1. Look for the hash in the list of final hashes, if it is there, we are done
  2. If it is not there, reduce into another plaintext and hash new plaintext
  3. Go back to step 1
  4. If the hash matches a final hash, the chain with the match contains the original hash
  5. Having identified the correct chain, we can start at the beginning of the chain with the starting plaintext and hash, check to see if we are successful, if not, reduce and try the next plaintext Checking these tables can be done efficiently using the GPU.