MD5 und SHA1 sind keine Passwort-Hashfunktionen. GPU-Cracker knacken Milliarden von SHA-256-Hashes pro Sekunde. Sie brauchen einen langsamen Algorithmus.
Vergleich¶
- Argon2id: Von OWASP empfohlen, memory-hard, am sichersten
- bcrypt: Zeitbewährt, 72-Byte-Limit
- scrypt: Memory-hard, weniger verbreitet
- PBKDF2: FIPS-kompatibel, aber GPU-freundlich
Argon2id — Empfohlene Konfiguration¶
from argon2 import PasswordHasher ph = PasswordHasher( time_cost=3, # Iterationen memory_cost=65536, # 64 MB parallelism=4, # Threads hash_len=32, salt_len=16, type=argon2.Type.ID # Hybrid ) hash = ph.hash(“password”) ph.verify(hash, “password”) # True oder VerifyMismatchError
bcrypt¶
import bcrypt hashed = bcrypt.hashpw(b”password”, bcrypt.gensalt(rounds=12)) bcrypt.checkpw(b”password”, hashed) # True
Wichtigste Erkenntnis¶
Argon2id für neue Projekte, bcrypt wenn Kompatibilität benötigt wird. Niemals MD5, SHA1, SHA256 für Passwörter.