You may have heard by now that SHA-0 has been "broken" and that MD5 is rumored to also be "broken". What does this actually mean:
There are two main concepts behind a modern hash like SHA-0, SHA-1 and MD5 which are:
- Upon hashing some content, it should be 1-way, you should never be able to 'undo' the hashing
- The likelihood of two pieces of content producing the same hash should be very very low and randomly distributed
In the case of SHA-0 being "broken", it is point 2 that is now flawed. They have found two inputs that produce the same output. They did it using a generalised mathematic principle - which means given one hash, they can generate a new piece of content that will produce the same hash - given 80,000 CPU cycles
Effectively, if you have a username+password combination stores as an SHA-0 hash in your database and you use it to authenticate whether somebody is logging in validly and somehow a hacker gets access to the hashes you have stored - they will be able to generate (after lots of CPU work) a new username+password combination (not the original) that will produce the same hash and let them log in to your system.
Please note the if's.