bcrypt hash-generator & -verifier
Hash wachtwoorden met de industriestandaard bcrypt en verifieer een gewoon wachtwoord tegen elke bcrypt-hash. Aanpasbare cost.
Wat is bcrypt?
bcrypt is een wachtwoordhashfunctie ontworpen door Niels Provos en David Mazières in 1999. Hij bouwt voort op het Blowfish-cijfer en is bewust traag: een instelbare kostenfactor bepaalt hoeveel key-setup-rondes worden uitgevoerd voordat de hash wordt geproduceerd, zodat verdedigers de kosten kunnen blijven verhogen naarmate hardware sneller wordt. Elke hash bevat ook een willekeurige salt van 128 bits, wat betekent dat hetzelfde wachtwoord twee keer hashen twee verschillende uitkomsten oplevert en vooraf berekende rainbow tables nutteloos zijn. De uitvoer ziet eruit als $2b$10$… waarbij 2b de algoritmeversie is, 10 de kostenfactor en de rest de salt en hash. bcrypt blijft in 2026 het werkpaard voor wachtwoordopslag: eenvoudiger te gebruiken dan Argon2, beter beproefd dan scrypt, en ondersteund in elke grote taal.
Hoe gebruik je het
Om te hashen typ je het wachtwoord, kies je een kostenfactor en klik je op Hash genereren. De uitvoer gaat rechtstreeks naar je database. Om te verifiëren plak je de hash uit de database, typ je het kandidaat-wachtwoord en klik je op Verifiëren. Bcrypt sluit de kostenfactor in de hash zelf in, dus bij verifiëren kies je hem niet opnieuw — de bibliotheek leest hem uit de string.
Een cost-factor kiezen
Elke kostenstap verdubbelt de tijd. Kies de hoogste kostenfactor waarbij logins onder ~250 ms blijven op jouw hardware. Voor drukbezochte logins op standaardservers is 10 (≈60 ms) het moderne minimum; 12 (≈250 ms) is een prettige keuze voor gevoelige accounts; 13–15 is gerechtvaardigd voor kroonjuwelen-credentials, maar je moet de latency meten. Verhoog de kosten wanneer je de database upgradet — herhash bij de volgende login.
Cost factor-referentie (moderne CPU, single thread)
| Kosten | Iteraties | Tijd (bij benadering) |
|---|---|---|
| 4 | 16 | ~1 ms |
| 8 | 256 | ~15 ms |
| 10 (default) | 1,024 | ~60 ms |
| 12 | 4,096 | ~250 ms |
| 13 | 8,192 | ~500 ms |
| 14 | 16,384 | ~1 s |
| 15 | 32,768 | ~2 s |