An attacker who steals a password database doesn't see plaintext โ a strong scheme stores hash(password, salt) and must be re-computed for every guess. Two things decide how long that takes: how many guesses exist (entropy) and how expensive one guess is (the hash algorithm's cost).
Entropy: E = L ยท log2(N) L = length, N = character-set size
Search space: 2^E possible passwords
Crack time: t = 2^E / (2 ยท guesses_per_second) (average case, half the space)
guesses/second (offline, GPU cluster, approx.):
MD5 unsalted โ 5ร10^10 โ fast hash, built for speed, wrong tool for passwords
bcrypt โ 2ร10^4 โ deliberately slow, tunable cost factor
Argon2id โ 5ร10^1 โ memory-hard, resists GPU/ASIC parallelism
MFA multiplies effective attacker cost by ~10^6 (a stolen hash alone is no longer enough).
- Length and character set set the entropy โ the size of the shield core and its glow track this.
- Hashing algorithm sets how many concentric ring layers guard the core; each ring an attacker must pay for again per guess.
- MFA adds a golden outer halo โ even a fully cracked hash isn't enough to log in.
Real systems (WebAuthn/FIDO2, TOTP apps, hardware keys) combine strong hashing, salting and MFA together โ no single layer is sufficient on its own.