When comparing md5 digest strings, the comparison operators will treat all such checksums as floating point since they start with "0e" and then a sequence of digits. Since this means 0 * 10 raised to the power of those digits and that is always 0, the result is that all md5 digests are equal. (surprise).
A simple fix for this is to not convert such strings to floating point. No one would enter such a number (since the value would be 0 anyway) and arithmetic expressions never result in such strings.