Generator hashy bcrypt

Generuj HDR

Wpisz koszt i czas trwania

Od czasu do czasu masz hash bcrypt ze starej kopii zapasowej i hasło plaintext, i musisz sprawdzić, czy pasują. Albo masz hasło i chcesz hash, który powstałby przy danym współczynniku kosztu. To narzędzie robi jedno i drugie: wpisz hasło, a wygeneruje świeży hash; wklej hash i kandydata, a powie, czy weryfikacja się udała — używając tego samego porównania w stałym czasie co produkcyjna kontrola logowania.

Generuj albo weryfikuj bcrypt

  1. 1

    Wybierz tryb

    Wygeneruj nowy hash z hasła albo zweryfikuj hasło względem istniejącego hasha `$2a$` / `$2b$` / `$2y$`.

  2. 2

    Dla generowania: wpisz plaintext i koszt

    Koszt 4-14; 10-12 to normalny zakres. Dla każdego hasha tworzona jest losowa sól 16-bajtowa.

  3. 3

    Dla weryfikacji: wklej hash i plaintext

    Narzędzie wyciąga sól i koszt z hasha, po czym ponownie haszuje plaintext z tymi samymi parametrami.

  4. 4

    Odczytaj wynik

    Tryb generowania kopiuje 60-znakowy hash; tryb weryfikacji zwraca zielone dopasowanie albo czerwony brak dopasowania.

Wnętrze trybu weryfikacji

Dla zapisanego hasha takiego jak:

$2b$12$mE2n5YqWjKqT9tXg.OQPoeeHZJ9hdSvOt5wFdRRQwl6yE1vWWY3z6

Weryfikator:

  1. Parsuje wersję (2b), koszt (12), sól (pierwsze 22 znaki po koszcie) i digest (ostatnie 31 znaków).
  2. Uruchamia bcrypt ponownie na kandydacie plaintext z wyciągniętą solą i kosztem.
  3. Porównuje wynikowy digest z oryginałem, używając porównania w stałym czasie.

Udane porównanie daje true; każda różnica daje false.

Porównanie w stałym czasie

Porównanie dwóch ciągów naiwnym == kończy się, gdy tylko różni się bajt — to kanał boczny czasu, który przy wystarczającej liczbie próbek może ujawniać hash cyfra po cyfrze. Produkcyjne kontrole haseł (i to narzędzie) używają porównania w stałym czasie, które zawsze sprawdza każdy bajt, więc czas decyzji nie zależy od liczby pasujących bajtów początkowych.

Typowe przypadki diagnostyczne

Objaw Prawdopodobna przyczyna
Weryfikacja nie przechodzi, a hasła jesteś pewien Końcowe białe znaki albo BOM w wejściu. Usuń oba.
Weryfikacja nie przechodzi, wersja 2y Niektóre biblioteki nie lubią 2y; jest poprawne i zgodne. Dalej haszuj już jako 2b.
Hash za krótki / źle uformowany To nie jest hash bcrypt. MD5 ma 32 znaki hex, SHA-1 ma 40, bcrypt ma 60 ze znakami $ jako separatorami.
Ostrzeżenie o niezgodnym koszcie Zapisany koszt jest niższy niż minimum Twojej polityki. Zahashuj ponownie przy następnym udanym logowaniu.

Rehash przy logowaniu

Dobra praktyka: gdy użytkownik zaloguje się poprawnie, sprawdź, czy zapisany hash ma koszt niższy niż obecna polityka. Jeśli tak, zahashuj hasło ponownie z nowym kosztem i zaktualizuj bazę. W ciągu kilku miesięcy podnosisz całą bazę użytkowników bez proszenia kogokolwiek o zmianę hasła.

Czego narzędzie nie robi

  • Masowa weryfikacja — Zbudowane dla jednego hasha naraz.
  • Łamanie albo brute force — Ataki słownikowe i rainbow-table są celowo poza zakresem.
  • Odzyskiwanie plaintext — bcrypt jest jednokierunkowy; jeśli nie pamiętasz hasła, jedyną drogą jest reset.

Najczęściej zadawane pytania

Nie. Haszowanie i weryfikacja odbywają się w przeglądarce. Ani plaintext, ani hash nie opuszczają strony.

Sól jest generowana losowo dla każdego hasha. Właśnie o to chodzi — dwaj użytkownicy z tym samym hasłem dostają różne hashe, co niweczy rainbow tables.

Tak, dokładnie to robi tryb weryfikacji: wklejasz hash, który masz, wklejasz hasło kandydata, a narzędzie potwierdza albo odrzuca dopasowanie.

Tak. Wszystkie nowoczesne warianty współdziałają — digest jest zgodny między wersjami; różni się tylko tag. Niektóre stare hashe $2$ z systemów z okolic 2000 roku mogą wymagać biblioteki z jawną obsługą legacy.

Powiązane narzędzia