Every few months someone posts a "this password takes 3 billion years to crack" chart, and every few months it's wrong — not because the math is hard, but because the chart quietly assumes the site you're logging into stored your password the way it should have.
Here's the only equation that matters:
keyspace ÷ guesses per second = time
Both numbers are knowable. Let's fill them in.
What a single modern GPU actually does
Rough hashcat figures for one RTX 4090 — orders of magnitude are what matter here, not decimal places:
| What's being attacked | Guesses per second |
|---|---|
| MD5 | ~100,000,000,000 |
| NTLM (Active Directory, Windows) | comparable |
| bcrypt, cost 12 | ~20,000 |
| Argon2id, sensibly tuned | a few thousand |
That's a five-million-fold spread. Which hash a site uses changes the cracking time far more than an extra character does.
Three real answers
1. Eight lowercase letters and digits — 36^8 ≈ 2.8 trillion candidates.
- Against bcrypt at 20,000/s: ~4.5 years on one GPU.
- Against MD5 at 100 billion/s: ~28 seconds.
2. Four random words from a 7,776-word list — 7776^4 ≈ 3.7 quadrillion candidates.
- Against bcrypt: ~5,800 years.
- Against MD5: ~10 hours.
3. Rent ten GPUs and divide by ten. Cloud GPU is billed by the minute; nobody needs to own the hardware to run this.
What this actually tells you
-
Length is cheap, symbols are expensive. Going 8 → 12 characters costs the attacker thousands of times more; swapping
afor@multiplies keyspace by a handful. Passphrases buy more than leetspeak. - You cannot control the hash. You only find out what a service uses after it leaks. Assume worst case and make the keyspace big enough to survive it.
- Online attacks are a different problem. Login forms are rate-limited, locked out, and often behind 2FA — the math above applies to an offline dump of hashes, which is how breaches actually burn people.
- Reuse is the multiplier. One reused password turns one breach into twenty compromised accounts, no cracking required.
The boring habit that works
Generate 16+ random characters, unique per site, and let a password manager hold them. The only thing you need to remember is the manager's passphrase — and that one deserves the passphrase treatment, because it's the single key that unlocks everything else.
When I want to see the difference between my old 8-character habit and what a generator produces, I use CodeToolbox's password generator — it runs entirely in your browser with no network calls, and it shows the entropy estimate next to the output. Watching that number jump from ~40 bits to ~100+ just by picking length instead of complexity is a better teacher than any security blog post, including this one.
Pick length. Skip the symbol gymnastics.
Top comments (0)