MD5 Is Broken — But Still Everywhere. Here's Why That's OK Sometimes
Published 2026-09-14
What "broken" actually means here
In 2004, cryptographers Xiaoyun Wang and colleagues demonstrated a practical method for creating collisions in MD5 — two different files that produce the identical MD5 hash. Before that discovery, finding a collision was assumed to require an infeasible amount of computation. After it, generating an MD5 collision became something researchers could do quickly on ordinary hardware, which is what "broken" specifically means for a hash function: not that it can be reversed, but that its collision resistance guarantee has failed.
A real attack that used this weakness
This wasn't just a theoretical concern. The Flame malware, discovered in 2012 targeting systems in the Middle East, used a forged digital certificate that exploited an MD5 collision to appear as if it were legitimately signed by Microsoft — a sophisticated real-world attack that helped push the security industry to finally abandon MD5 for anything certificate or signature related.
Why MD5 is dangerous for security, specifically
The collision weakness matters most wherever someone might deliberately want to forge or substitute data without detection: digital signatures, SSL certificates, and password storage. If an attacker can craft a malicious file with the same MD5 hash as a legitimate one, hash-based verification can be fooled into treating the malicious file as trusted.
Where MD5 is still genuinely fine
For situations where nobody is deliberately trying to forge a matching hash — checking whether a large file got corrupted during an accidental transfer, generating a quick cache key, or deduplicating non-sensitive data — MD5's speed and wide compatibility still make it a reasonable practical choice. The danger is specifically in adversarial situations where someone might want to exploit the collision weakness on purpose.
The rule of thumb
If a hash is protecting against an interested attacker (passwords, signatures, security tokens), don't use MD5 — use bcrypt for passwords or SHA-256 for general security hashing. If it's just detecting accidental changes with no adversary in the picture, MD5 remains a fast, convenient option.
Our MD5 Hash Generator computes MD5 checksums instantly for exactly these non-adversarial use cases.