bcrypt-hashgenerator

Generera hash

Higher = slower & more secure. 12 is en good default.

Ibland har du en bcrypt-hash från en gammal backup och ett klartextlösenord, och behöver veta om de matchar. Eller så har du ett lösenord och vill ha hashen som en viss kostnadsfaktor skulle producera. Det här verktyget gör båda: skriv ett lösenord så genererar det en färsk hash, klistra in en hash och en kandidat så säger det om verifieringen lyckas — med samma konstanttidsjämförelse som en produktionsinloggning.

Generera eller verifiera bcrypt

  1. 1

    Välj läge

    Generera en ny hash från ett lösenord, eller verifiera ett lösenord mot en befintlig `$2a$` / `$2b$` / `$2y$`-hash.

  2. 2

    För generering: ange klartext och kostnad

    Kostnad 4-14; 10-12 är normalt. Ett slumpmässigt salt på 16 bytes skapas för varje hash.

  3. 3

    För verifiering: klistra in hash och klartext

    Verktyget extraherar salt och kostnad från hashen och hashar om klartexten med samma parametrar.

  4. 4

    Läs resultatet

    Genereringsläge kopierar hashen på 60 tecken; verifieringsläge returnerar en grön matchning eller röd avvikelse.

Interna steg i verifieringsläge

Givet en lagrad hash som:

$2b$12$mE2n5YqWjKqT9tXg.OQPoeeHZJ9hdSvOt5wFdRRQwl6yE1vWWY3z6

Verifieraren:

  1. Parsar version (2b), kostnad (12), salt (första 22 tecknen efter kostnad) och digest (sista 31 tecknen).
  2. Kör bcrypt igen på kandidatens klartext med det extraherade saltet och kostnaden.
  3. Jämför den resulterande digesten med originalet med konstanttidsjämförelse.

En lyckad jämförelse ger true; varje skillnad ger false.

Konstanttidsjämförelse

Att jämföra två strängar med ett naivt == returnerar så snart en byte skiljer sig — en timing-side channel som kan läcka hashen siffra för siffra över tillräckligt många prover. Produktionskontroller av lösenord (och det här verktyget) använder en konstanttidsjämförelse som alltid granskar varje byte, så beslutstiden beror inte på hur många inledande bytes som matchar.

Vanliga diagnostiska fall

Symptom Trolig orsak
Verifiering misslyckas, du är säker på lösenordet Avslutande blanksteg eller BOM i indata. Ta bort båda.
Verifiering misslyckas, version 2y Vissa bibliotek ogillar 2y; den är giltig och kompatibel. Hasha om med 2b framöver.
Hash för kort / felformad Inte en bcrypt-hash. MD5 är 32 hextecken, SHA-1 är 40, bcrypt är 60 med $-avgränsare.
Varning om kostnadsmismatch Lagrad kostnad ligger under din policyminiminivå. Hasha om vid nästa lyckade inloggning.

Omhashning vid inloggning

Bästa praxis: när en användare loggar in framgångsrikt, kontrollera om den lagrade hashen har lägre kostnad än din aktuella policy. Om ja, hasha om lösenordet med den nya kostnaden och uppdatera databasen. Inom några månader har du uppgraderat hela användarbasen utan att be någon byta lösenord.

Vad verktyget inte gör

  • Bulkverifiering — Byggt för en hash i taget.
  • Knäcker eller kör brute force — Ordboks- och rainbow-table-attacker ligger avsiktligt utanför verktygets omfattning.
  • Hämtar klartexten — bcrypt är envägs; om du har glömt lösenordet är återställning enda vägen.

Vanliga frågor

Nej. Hashning och verifiering sker i din webbläsare. Varken klartexten eller hashen lämnar sidan.

Saltet genereras slumpmässigt per hash. Det är hela poängen — två användare med samma lösenord får olika hashar, vilket stoppar rainbow tables.

Ja, det är exakt vad verifieringsläget gör: klistra in hashen du har, klistra in ett kandidat-lösenord, och verktyget bekräftar eller nekar matchning.

Ja. Alla moderna varianter samverkar — digesten är kompatibel mellan versioner; bara taggen skiljer sig. Vissa gamla $2$-hashar från system runt år 2000 kan behöva ett bibliotek med explicit legacy-stöd.

Relaterade verktyg