|
Message-ID: <20150918152508.GA24736@openwall.com> Date: Fri, 18 Sep 2015 18:25:08 +0300 From: Solar Designer <solar@...nwall.com> To: john-dev@...ts.openwall.com Subject: fast hash early exit vs. large hash list magnum - For raw-md5, we currently have early exit before the last 3 steps. Aside from this being extremely far from what state of the art fast hash crackers do in terms of steps reversal, as currently implemented it also hurts performance when cracking large hash lists. Only 32 bits of the hash result are preserved and the rest are recomputed with scalar code in cmp_exact(), and when the target hash list is large this happens quite often. In the 29M testcase, cmp_exact() is called a few million times on wrong passwords (as well as 1.7+ million on correct passwords). As an experiment, I've tried disabling REVERSE_STEPS in rawMD5_fmt_plug.c, implementing a full binary check in cmp_one(), and turning cmp_exact() into a "return 1;" --test benchmark became about 5% slower. My 29M testcase runs remained mostly unaffected, with the best one reaching: real 0m40.659s user 2m52.439s sys 0m13.803s I think we should support a mode where the SIMD code would exit early, but would record the entire state (all four vectors), so that cmp_*() wouldn't have to recompute from scratch. Ideally, we'd only enable this mode when the number of loaded hashes is large, although this can be tricky in terms of (avoiding) code complexity. Alexander
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.