Many know that hashes are encoded passwords. Using hashes greatly increases safety of passwords storage, for example, in the forums, databases, etc. Let’s assume, forum administrator has password “admin12345” which is certainly stored in the forum database. What is to be done to authenticate user on the forum? Input password shall be compared with “admin12345”. If they match, administrator may enter the forum. It seems working great, but what if someone unautorized gets access to database and sees open password and can easily log in as administrator. Here hashes come to rescue. For instance, MD5-hash for “admin12345” password will look like “7488e331b8b64e5794da3fa4eb10ad5d” and it’s exactly what we store in our database, not a password itself. During user authentication input password is converted to hash to compare with the hash stored in the database – if these two match that means input password is correct and logging on is successful.
But what if we need to perform reverse action – to try to restore password from hash? It’s impossible to do that directly, as any hashing algorithm is...