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. 1

    Kies een modus

    Genereer een nieuwe hash van een wachtwoord, of verifieer een wachtwoord tegen een bestaande `$2a$` / `$2b$` / `$2y$` hash.

  2. 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. 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. 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:

  1. Parset versie (2b), cost (12), salt (eerste 22 tekens na cost) en digest (laatste 31 tekens).
  2. Draait bcrypt opnieuw op de kandidaat-plaintext met de uitgelezen salt en cost.
  3. 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