bcrypt-hashgenerator
Hash genereren
Hoger = trager en veiliger. 12 is een goede standaard.
Af en toe heb je een bcrypt-hash uit een oude backup en een plaintext wachtwoord, en moet je weten of ze matchen. Of je hebt een wachtwoord en wilt de hash zien die een bepaalde costfactor zou opleveren. Deze tool doet allebei: typ een wachtwoord en hij genereert een verse hash; plak een hash en kandidaat en hij vertelt of verificatie slaagt — met dezelfde constant-time vergelijking als een productie-logincheck.
bcrypt genereren of verifiëren
-
1
Kies een modus
Genereer een nieuwe hash van een wachtwoord, of verifieer een wachtwoord tegen een bestaande `$2a$` / `$2b$` / `$2y$` hash.
-
2
Voor genereren: voer plaintext en cost in
Cost 4-14; 10-12 is normaal. Voor elke hash wordt een random salt van 16 bytes gemaakt.
-
3
Voor verifiëren: plak hash en plaintext
De tool haalt salt en cost uit de hash en hasht de plaintext opnieuw met dezelfde parameters.
-
4
Lees het resultaat
Generate-modus kopieert de hash van 60 tekens; verify-modus geeft een groene match of rode mismatch terug.
Interne werking van verify-modus
Gegeven een opgeslagen hash zoals:
$2b$12$mE2n5YqWjKqT9tXg.OQPoeeHZJ9hdSvOt5wFdRRQwl6yE1vWWY3z6
De verifier:
- Parset versie (
2b), cost (12), salt (eerste 22 tekens na cost) en digest (laatste 31 tekens). - Draait bcrypt opnieuw op de kandidaat-plaintext met de uitgelezen salt en cost.
- Vergelijkt de resulterende digest met de originele via constant-time comparison.
Een succesvolle vergelijking levert true op; elk verschil levert false op.
Constant-time comparison
Twee strings vergelijken met een naïeve == stopt zodra een byte verschilt — een timing side channel dat over genoeg samples de hash cijfer voor cijfer kan lekken. Productie-wachtwoordchecks (en deze tool) gebruiken een constant-time vergelijking die altijd elke byte bekijkt, zodat de beslistijd niet afhangt van hoeveel beginbytes overeenkomen.
Veelvoorkomende diagnosegevallen
| Symptoom | Waarschijnlijke oorzaak |
|---|---|
| Verificatie faalt, je bent zeker van het wachtwoord | Witruimte aan het einde of BOM in de invoer. Verwijder beide. |
Verificatie faalt, versie 2y |
Sommige libraries houden niet van 2y; hij is geldig en compatibel. Re-hash voortaan met 2b. |
| Hash te kort / misvormd | Geen bcrypt-hash. MD5 is 32 hextekens, SHA-1 is 40, bcrypt is 60 met $-delimiters. |
| Cost mismatch-waarschuwing | Opgeslagen cost ligt onder je beleidsminimum. Re-hash bij de volgende succesvolle login. |
Rehashen bij login
Beste praktijk: wanneer een gebruiker succesvol inlogt, controleer je of de opgeslagen hash een lagere cost heeft dan je huidige beleid. Zo ja, hash het wachtwoord opnieuw met de nieuwe cost en werk de database bij. Binnen een paar maanden upgrade je de hele gebruikersbasis zonder iemand te vragen het wachtwoord te wijzigen.
Wat de tool niet doet
- Bulkverificatie — Gebouwd voor een hash tegelijk.
- Kraken of brute force — Woordenboek- of rainbow-table-aanvallen vallen bewust buiten het bereik.
- Plaintext terughalen — bcrypt is eenrichtingsverkeer; als je het wachtwoord bent vergeten, is resetten de enige route.
Veelgestelde vragen
Nee. Hashing en verificatie gebeuren in je browser. Noch plaintext, noch hash verlaat de pagina.
De salt wordt per hash random gegenereerd. Dat is precies het punt — twee gebruikers met hetzelfde wachtwoord krijgen verschillende hashes, waardoor rainbow tables worden verslagen.
Ja, dat is precies wat verify-modus doet: plak de hash die je hebt, plak een kandidaat-wachtwoord, en de tool bevestigt of ontkent een match.
Ja. Alle moderne varianten werken samen — de digest is compatibel tussen versies; alleen de tag verschilt. Sommige oude $2$-hashes uit systemen rond 2000 kunnen een library nodig hebben met expliciete legacy-ondersteuning.
Gerelateerde tools
A1Z26-cijferencoder
Codeer tekst met het A1Z26-cijfer (A=1, B=2, ... Z=26) of decodeer een cijferreeks terug naar letters, met aanpasbaar scheidingsteken.
AES versleutelen / ontsleutelen
Versleutel en ontsleutel tekst met laag risico met AES-ciphers van OpenSSL. De passphrase wordt met SHA-256 gehasht en de Base64-uitvoer bevat IV plus versleutelde tekst.
Atbash-codering
Codeer of decodeer tekst met het Atbash-cijfer, een Hebreeuwse substitutie die A-Z koppelt aan Z-A. Dezelfde bewerking versleutelt en ontsleutelt.
Base32 encoder en decoder
Encodeer en decodeer Base32-strings met het RFC 4648-alfabet. Handig voor TOTP-secrets, hoofdletterongevoelige tokens en door mensen getypte identifiers.
bcrypt-generator
Genereer een bcrypt-hash van een plaintext wachtwoord. Instelbare costfactor van 4 tot 14, compatibel met Laravel, Django, Node en PHP.
Base85 encoder en decoder
Encodeer en decodeer Base85 in Adobe Ascii85 (PostScript/PDF) of Z85 (ZeroMQ). Compacter dan Base64 voor binaire data.