|
Message-ID: <20130127231701.GA6692@openwall.com> Date: Mon, 28 Jan 2013 03:17:01 +0400 From: Solar Designer <solar@...nwall.com> To: john-dev@...ts.openwall.com Subject: Re: Bug in a number of "crack array" formats magnum, Dhiru - On Sun, Jan 27, 2013 at 11:35:44PM +0100, magnum wrote: > You can't reset the array in set_salt() because if we only have one salt, set_salt() will only be called once and never again. I get a deja-vu now, I am pretty sure we have told you this before. We discussed similar issues before, but maybe not this specific one. > I think you should do this: > > 1. If using an "any_cracked" variable, reset it in crypt_all() before the OMP loop. I agree. > 2. Always set *or reset* cracked[index] in crypt_all(). Ie. do not just set it on successfull crack but also reset it otherwise. This may have performance impact with fast (non-)hashes and OpenMP, due to false sharing, which may occur due to the cracked[] elements being tiny and thus close together. It may be better to memset() the entire cracked array to 0, but only if any_cracked was previously set. That is, crypt_all() may start with: if (any_cracked) { memset(cracked, 0, cracked_size); any_cracked = 0; } before it proceeds with the loop and OpenMP stuff. IIRC, it's the exact same code that is currently in set_salt() in some formats. It only needs to be moved to the beginning of crypt_all(), because of the special case of having only one salt. Thanks, 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.