Yes and just because no one has yet decrypted MD5 doesn't mean that it is unbreakable.
If you take the RSA project as an example then you know that any encrypted string can be decrypted.
The hash function takes a know input in a known form(email address) and performs the function to generate the hash. The are very few functions that do not have a proof and you can use random numbers to try an generate a solution also, email addresses are also in a standard format in email@example.com there is an "@" and a period before the teminating string and there are limited terminating strings. So if you know the form of the data and the length or max length and the general properties of an email address and the general properties of the hash function you can decrypt the hash given the time. DO NOT CONFUSE what is unbreakable with what is not yet broken.
You can down vote whatever you feel like but a hash is just a function that is yet to be proven or cracked
no one has yet decrypted MD5 doesn't mean that it is unbreakable
Noone has done it because MD5 is NOT an encryption! It's a lossy, cryptographic hash.
There is no way to get the original content back from the hash. This is especially true since it is known that multiple, very different, sources can generate the exact same hash value. So, how are you going to determine which one was the original content?
There is no way to do this in any way that anyone would consider "production quality code".