Math guide · 17 min read

How Strong Does Your Crypto Password Really Need to Be?

Forget "12 characters with a symbol". This is the real arithmetic: how many bits of entropy your wallet password needs, why the choice of KDF changes the answer by six orders of magnitude, and what Diceware, BIP39 passphrases and random generators actually give you.

Most password advice is folklore. "Use 12 characters with a symbol" is meaningless without specifying against what attacker, for what KDF, over what time horizon. This guide gives you the actual numbers so you can choose a password that is as strong as it needs to be and no stronger than you can remember.

The only concept that matters: entropy

A password's strength is measured in bits of entropy. An attacker who knows your password's generation process — "random from an alphabet of 62 characters, length 10" — needs on average 2^(n-1) guesses to find it, where n is the entropy bits. The formula:

entropy_bits = length × log₂(alphabet_size)

Example: 10 random characters from [a–z, A–Z, 0–9] (alphabet 62) gives 10 × log₂(62) ≈ 10 × 5.95 = 59.5 bits.

The trick is the word random. A password like Password123! has 12 characters and 72 bits of apparent entropy, but an attacker's smart dictionary tries it within the first thousand candidates. Its real entropy is closer to 10 bits. The same length generated truly randomly gives 72 bits and takes until 2050 to brute force on a serious rig.

The attacker models

AttackerBudgetMD5/SHA1 H/sScrypt H/s
Hobbyist, 1 GPU$1,50060 GH/s1 KH/s
Recovery service, 10 GPUs$25,000600 GH/s10 KH/s
Commercial farm, 100 GPUs$250,0006 TH/s100 KH/s
Nation-state, 100k ASICs/GPUs$1 B6 EH/s1 GH/s

Bitcoin's own network hashrate sits around 600 EH/s in 2026, so "nation-state" in this table is actually conservative — you can rent that scale today from the right ASIC pool, though only for SHA-256. For password KDFs the real ceiling is roughly 10 EH/s on fast modes.

How long does your password survive?

The time to exhaust a keyspace of N candidates is N / rate / 2 on average (half the space by the birthday pigeonhole). For an 80-bit-entropy password against various attackers on a fast hash (SHA-256):

Attacker80 bits100 bits128 bits
Hobbyist 60 GH/s320,000 years330 million yrsheat death
Service 600 GH/s32,000 years33 million yrsheat death
Farm 6 TH/s3,200 years3.3 million yrs8 × 10^19 yrs
Nation 6 EH/s3.2 years3.3 million yrs8 × 10^13 yrs

Key takeaway: 80 bits is enough against a recovery-service-scale attacker but not a nation-state on a fast KDF. 100 bits survives everyone on fast KDFs for millions of years. 128 bits is universally safe.

Slow KDFs are your friend

The attacker speeds above assume a bare hash. Modern wallets do not hash your password once — they run it through a key derivation function designed to be slow. This turns every attacker's effective rate down by the KDF's cost multiplier.

Wallet / KDFCost factor vs SHA3090 rateEquivalent bits
Electrum 1024 PBKDF2-SHA256~10,000x4.5 MH/s+13 bits
MetaMask 10k PBKDF2-SHA256~100,000x110 KH/s+17 bits
Bitcoin Core ~25k SHA-512+AES~250,000x100 KH/s+18 bits
Ethereum Scrypt N=262144~60 million x900 H/s+26 bits
Argon2id 64 MB (best practice)~500 million x~100 H/s+29 bits

"Equivalent bits" is how much extra password entropy the KDF effectively adds by slowing the attacker down. An Ethereum keystore password with 60 bits of real entropy is, against GPU attackers, as safe as a raw 86-bit SHA password. That is why Scrypt-based wallets can get away with shorter passwords than Electrum-based ones.

Diceware — word-count recommendations

Diceware generates a passphrase by rolling physical dice to pick words from a 7,776-word list. Each word adds log₂(7776) ≈ 12.92 bits of entropy. Memorable, typeable, and genuinely random if you use actual dice.

WordsEntropyUse case
564.6 bitsLow-value accounts with slow KDF; NOT for Bitcoin.
677.5 bitsElectrum / MetaMask minimum. Safe against recovery services.
790.4 bitsBitcoin Core wallet.dat recommended. BIP39 passphrase minimum.
8103.3 bitsHigh-value cold storage. Nation-state resistant on any modern KDF.
9116.3 bitsParanoid cold storage. Generational holdings.
10129.2 bitsBeyond the reach of any foreseeable classical attacker.

Random passwords — character-count recommendations

Length[a–z A–Z 0–9] (62)+ symbols (95)
847.6 bits (too weak)52.6 bits (too weak)
1059.5 bits65.7 bits
1271.5 bits78.9 bits
1483.4 bits (good)92.0 bits (good)
1695.3 bits (strong)105.1 bits (strong)
20119.1 bits (paranoid)131.4 bits (paranoid)

The BIP39 passphrase — special case

The optional 25th-word passphrase on a BIP39 seed is the single most abused feature in crypto. It is treated as "extra security" by users who then choose weak values, unaware of three specific risks:

  1. Cheap KDF. BIP39 passphrase is fed into PBKDF2-HMAC-SHA512 at only 2048 iterations. This is roughly 1000x cheaper than Bitcoin Core's KDF. A 3090 tests millions of candidates per second.
  2. No wrong-password error. Every passphrase produces a valid wallet at different addresses. You cannot tell you entered it wrong; you just see empty addresses.
  3. Partial-seed leaks become fatal. If your 24 words are compromised (stolen photo, bad shamir split), a weak 25th word falls in under a day to a GPU attacker.

Minimum safe BIP39 passphrase: 7 Diceware words or 16 random characters. Anything shorter is security theatre.

How patterned passwords fail

Attackers do not iterate random strings; they iterate patterns drawn from billions of leaked-password corpora and targeted rule sets. A password's real entropy is measured against the attacker's candidate ordering, not the theoretical alphabet. Common patterns and their real entropy:

  • Password123! — tried in the first 10,000 candidates. ~13 bits real.
  • Bitcoin2024! — tried in the first million. ~20 bits real.
  • MyDogSparky78 — known name + dog word + year. Under 30 bits once the attacker has your social media.
  • Tr0ub4dor&3 — the infamous xkcd example. ~28 bits once common l33t-substitution rules are applied.
  • correct horse battery staple — four random common words. ~44 bits. Marginal.

The rule of thumb: any password a human would find "memorable because it makes sense" has dramatically less entropy than its character count suggests. A password that looks like random line noise has the entropy its length implies.

How recovery services exploit low entropy

Every commercial recovery service (including ours) wins its finds by attacking the low-entropy patterns first. When you submit hints like "it had my dog's name and a year", the service can usually collapse the candidate space from 10^20 to around 10^7 — seven orders of magnitude — and crack in hours instead of never. This is simultaneously the reason recovery is possible at all and the warning that your password is probably not as strong as you think.

Flip side: if you set your wallet password from /dev/urandom or a reputable password manager at 14+ characters, and you do not remember it, a recovery service cannot help you either. Your protection cuts both ways.

Practical recommendations

  1. For a hot wallet you access weekly: 6 Diceware words or 14 random characters. Store in a reputable password manager; do not trust your memory for the exact spelling.
  2. For a Bitcoin Core / Electrum cold wallet: 7 Diceware words or 16 random characters. Written twice on paper in two geographic locations.
  3. For a BIP39 25th-word passphrase: 7 Diceware words minimum. Never a short word; the KDF is too cheap.
  4. For a hardware-wallet PIN: whatever the device supports, usually 4–8 digits. The hardware rate-limits attacks so entropy matters less; the security comes from the enclave, not the PIN.
  5. Never rely on a password alone for generational wealth. Always have the seed phrase backed up separately; the password only protects the local file, not the coins.

What to do right now

If you just created a wallet: run your password through zxcvbn's online demo or the CLI tool. If its estimated crack time under "online fast" is under a year, your password is weak; regenerate it from a password manager or Diceware.

If you already lost access to a wallet with a weak password, that is actually good news — professional GPU farms can probably recover it. Submit via our recover page; we pair candidate lists with hints you provide and charge only on success.

Related reading: our BIP39 seed recovery guide covers the math of missing-word attacks, and the home GPU rig guide shows real measured hashcat rates against all these KDFs on consumer hardware.

Last updated 2026-04-21. Hashcat performance numbers verified on RTX 3090 with driver 550.120 and hashcat 6.2.6; KDF constants from the respective wallet source repositories as of Q1 2026.