Most Password Policies Are Based on Outdated Advice
The classic password policy — minimum 8 characters, one uppercase, one number, one special character, rotate every 90 days — comes from a 2003 NIST document that was superseded in 2017. The original author has publicly regretted writing it. Modern guidance from NIST SP 800-63B, NCSC, and industry research points to a completely different approach.
Use OpsCheck Password Strength Checker to evaluate password entropy against modern standards. Then use OpsCheck Hash Generator to understand how your password storage choice affects real-world security.
What Actually Matters for Password Security
# The modern rules (NIST SP 800-63B, NCSC guidance):
# 1. Length is the primary defense — minimum 12 characters
# 2. No complexity rules — they produce "P@ssw0rd2026!" which is
# trivially cracked by rules-based attacks
# 3. No mandatory rotation — it encourages weaker passwords
# 4. Check against breach databases (Have I Been Pwned API)
# 5. Allow paste — "no paste" breaks password managers
# 6. Allow all Unicode characters, including spaces
# Entropy estimation (simplified):
# 12 random lowercase: 26^12 ≈ 9.5 × 10^16 combinations
# 8 chars with complexity: ~6.6 × 10^15 combinations
# A 12-char passphrase: "correct horse battery staple"
# is stronger than "P@ssw0rd" and easier to remember
How Password Storage Affects Strength
# Password hashing matters more than password rules:
# Argon2id — current best practice, memory-hard
# bcrypt (cost 12+) — still solid, widely supported
# PBKDF2-SHA256 (100K+ iterations) — acceptable, NIST approved
# SHA-256 (salted) — too fast, GPUs can test billions/second
# MD5 — effectively plaintext in 2026
# A "strong" 12-char password stored as MD5 gives an attacker
# the same difficulty as a "weak" 6-char password stored as Argon2id.
# The storage algorithm is part of the strength equation.
Real-World Scenario
A hosting control panel enforced "8-16 characters, must include uppercase, digit, and special character." Users predictably chose "Hosting123!" or "Admin2026!" — both in the top 10,000 password lists that attackers check first. After switching to a 12-character minimum with no complexity rules and adding breach-database checking at registration, the average password entropy increased from ~28 bits to ~55 bits. Support tickets about forgotten passwords dropped because users could use passphrases instead of cryptic combinations.
# Check if a password hash is using a weak algorithm
grep -E '^\$2[ay]\$' /etc/shadow # bcrypt — good
grep -E '^\$1\$' /etc/shadow # MD5 — bad
grep -E '^\$6\$' /etc/shadow # SHA-512 — not great
Policy Checklist for Hosting Panels
- Minimum 12 characters, no maximum (or 128+ to prevent DoS)
- No complexity rules — entropy matters, not character variety
- Check against breach databases at registration and password change
- Store with Argon2id or bcrypt (cost 12+)
- Allow paste, allow password managers, allow all Unicode
- Only force rotation if there is evidence of compromise
- Rate-limit login attempts — this matters more than password rules