Let's consider that I'm the attacker and have access to hashes of passwords of a given database against which I will attempt a dictionary attack.

My question is: Will I be able to find out by reverse engineering how the primitive works once I generate the hash that matches any of the hashes in the database? And will I then manage to find all passwords matching the hashes or do I need to compute until I find another collision?

In other words, after first password cracked, is it 1 - 1 or N - N.

1 Answer 1


Simply put: No. Hashing is a one-way function and cannot be "decrypted" or "reverse engineered" (given you are attacking any semi-current hashing algorithm). Therefor, you need to hash all the potential passwords and compare those hashes against the hash you are trying to break.

If the hashes are not salted and not peppered, it is enough to calculate the hashes of all potential passwords once and compare them to the password hashes.

If the hashes are salted and/or peppered, you need to hash all potential passwords with the given salt/pepper and compare them against the individual password hash.

All of this is under the assumption that you know what hashing algorithm you are dealing with and how it is configured (iterations, salt, pepper, etc.)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .