§

Generator Bcrypt

§

Generuj hasz Bcrypt

10 (1,024 rounds)

Bcrypt jest standardem haszowania haseł w amerykańskim web developmentcie od swojego debiutu w 1999 roku autorstwa Provosa i Mazièresa. NIST SP 800-63B zaleca haszowanie pamięciożerne do przechowywania haseł, a OWASP wymienia bcrypt jako preferowaną opcję obok Argon2id. Rails dostarcza bcrypt przez has_secure_password, Django obsługuje go jako wtyczkowy backend, a programiści Node.js sięgają po bcryptjs. Współczynnik kosztu kontroluje, jak długo trwa pojedyncze haszowanie — podwojenie kosztu podwaja nakład pracy. Większość aplikacji przyjmuje koszt 10 (1024 rundy) jako wartość bazową, podczas gdy systemy finansowe i administracyjne często używają 12 (4096 rund). To narzędzie działa w całości w przeglądarce przy użyciu JavaScript, więc Twoje hasła nigdy nie opuszczają Twojego urządzenia.

Czym jest bcrypt?

Bcrypt to funkcja haszowania haseł zaprojektowana przez Nielsa Provosa i Davida Mazièresa, oparta na szyfrze Blowfish. W przeciwieństwie do szybkich skrótów takich jak MD5 czy SHA-256, bcrypt jest celowo wolny i wymagający obliczeniowo — to sprawia, że ataki brute-force na skradzione hasze haseł są niepraktyczne. Bcrypt automatycznie generuje losową sól dla każdego hasła, więc identyczne hasła dają różne hasze.

Jak działa bcrypt?

Algorytm bcrypt działa w całości w Twojej przeglądarce. Oto co dzieje się krok po kroku:

  1. Twoje hasło jest kodowane jako bajty UTF-8 i przekazywane do harmonogramu kluczy bcrypt, który inicjuje 4184-bajtową tablicę P i S-boxy szyfru Blowfish przy użyciu hasła i soli.
  2. Generowana jest losowa 128-bitowa sól. Sól jest mieszana z harmonogramem kluczy, tak że każda unikalna sól daje zupełnie inny hasz nawet dla tego samego hasła.
  3. Harmonogram kluczy jest wykonywany przez 2^cost rund (np. 2^10 = 1024 iteracji dla kosztu 10). Każda iteracja ponownie szyfruje sól i wpisy tablicy P, spowalniając obliczenia proporcjonalnie do wzrostu kosztu.
  4. Wynik końcowy to 60-znakowy ciąg w formacie $2b$<cost>$<salt><hash>, gdzie cost jest uzupełniony zerami (np. 10), salt to 22 znaki Base64, a hash to 31 znaków Base64.
  5. Do weryfikacji ten sam algorytm jest uruchamiany ponownie z kandydatem na hasło i solą wyodrębnioną z przechowywanego haszu. Jeśli pochodny hasz jest zgodny z przechowywanym, hasło jest poprawne.

Jaki współczynnik kosztu powinienem użyć?

Współczynnik kosztu to logarytm liczby iteracji — koszt 10 oznacza 2^10 = 1024 rundy, koszt 12 oznacza 4096 rund. Wybierz w zależności od potrzeb bezpieczeństwa i sprzętu:

  • Koszt 4-6 (16-64 rund) — tylko do programowania i testowania. Zbyt szybki dla produkcji; zapewnia minimalną ochronę.
  • Koszt 8 (256 rund) — absolutne minimum dla niekrytycznych aplikacji. Około 6ms na nowoczesnym sprzęcie.
  • Koszt 10 (1024 rundy) — obecnie zalecana wartość bazowa. Zajmuje około 25ms. Dobry dla większości aplikacji webowych.
  • Koszt 12 (4096 rund) — zalecany dla portali administracyjnych, systemów finansowych i aplikacji o wysokim poziomie bezpieczeństwa. Zajmuje około 100ms.
  • Koszt 14 (16384 rundy) — wysokie bezpieczeństwo. Zajmuje około 400ms. Użyj dla haseł głównych, kluczy szyfrowania lub gdy opóźnienie logowania jest akceptowalne.

Dlaczego warto użyć tego generatora bcrypt?

  • Prywatność — każde hasło jest haszowane lokalnie w przeglądarce. Żadne dane nie opuszczają Twojego urządzenia.
  • Podwójny tryb — generuj nowe hasze lub weryfikuj istniejące obok siebie bez przełączania stron.
  • Regulowany współczynnik kosztu — dostosuj koszt od 4 (szybki) do 15 (bardzo wolny) do potrzeb bezpieczeństwa aplikacji.
  • Zgodność ze standardami — generuje hasze w standardowym formacie $2b$ kompatybilnym z każdym głównym językiem i frameworkiem.

Jakie są typowe zastosowania bcrypt?

Bcrypt jest szeroko stosowany w branży do przechowywania i weryfikacji haseł:

  • Uwierzytelnianie użytkowników aplikacji webowych — przechowywanie haszy haseł w bazach danych, aby hasła w postaci jawnej nigdy nie były zapisywane.
  • Haszowanie kluczy API — haszowanie sekretów API przed przechowaniem, aby naruszenie bazy danych nie ujawniło ważnych poświadczeń.
  • Audyt migracji — sprawdzanie, czy starsze hasze haseł z poprzedniego systemu nadal uwierzytelniają użytkowników po aktualizacji warstwy uwierzytelniania.

Jak wygląda hasz bcrypt?

Haszowanie hasła hunter2 z kosztem 10 daje ciąg taki jak $2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy. Format składa się z: $2b$ (wersja algorytmu), 10 (współczynnik kosztu), $, następnie 22 znaki soli i 31 znaków haszu, wszystkie zakodowane w Base64. Każde uruchomienie dla tego samego hasła daje inny hasz z powodu losowej soli.

Ten generator bcrypt działa w całości w Twojej przeglądarce przy użyciu czystej implementacji JavaScript. Haszuj hasła przed ich przechowaniem, weryfikuj istniejące hasze i dostosuj współczynnik kosztu do swoich wymogów bezpieczeństwa — wszystko bez wysyłania ani jednego bajtu na serwer.