Think about this:
I have a numeric string, say it's "12345678".
I have a hash algorithm, it just returns the sum of all the single numbers, let's call it f()
so, f("12345678") = 1 + 2+ .. + 8 = 36.
Then the question:
known f(x) = 36, is it possible to get the original value of x ?
We can't, because f() is an algorithm causes information loss.
The MD5 is a hash algorithm like f(), but much more complexer.