Article

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.

Ready to try it yourself?
Open the MD5 Hash Generator →