Generator bcrypt
bcrypt nadal jest jednym z najbezpieczniejszych wyborów do przechowywania haseł. Jest celowo wolny, wyprowadza własną sól i skaluje się wraz z ulepszeniami sprzętu dzięki regulowanemu parametrowi kosztu. Ten generator tworzy zgodny ze standardem hash bcrypt z hasła plaintext, aby można było zasilić użytkownika testowego, przenieść konto między systemami albo porównać wartości z istniejącym hashem zapisanym w kolumnie users.password.
Jak zahaszować hasło bcrypt
-
1
Wpisz hasło plaintext
Do 72 bajtów — bcrypt po cichu obcina wszystko powyżej tego limitu.
-
2
Wybierz współczynnik kosztu
10 to obecny domyślny poziom; 12 jest częste w nowych systemach; 14 to wariant paranoiczny. Każde +1 w przybliżeniu podwaja czas haszowania.
-
3
Generowana jest losowa sól
16 bajtów soli pochodzi z kryptograficznego RNG i zostaje osadzonych w wynikowym ciągu hasha.
-
4
Skopiuj hash
Wynik to samopisujący się ciąg w rodzaju `$2b$12$...`, który zawiera wersję, koszt, sól i digest.
Anatomia hasha bcrypt
$2b$12$mE2n5YqWjKqT9tXg.OQPoeeHZJ9hdSvOt5wFdRRQwl6yE1vWWY3z6
| | | |
| | salt (22 znaki Base64) digest (31 znaków Base64)
| cost (2 cyfry, 4-31)
version (2a, 2b, 2y — wszystko bcrypt)
Cały ciąg ma 60 znaków. Kolumny typu VARCHAR(60) albo CHAR(60) są standardowym schematem.
Zalecenia dotyczące współczynnika kosztu
| Cost | Przybliżony czas na hash (CPU 2024) | Zastosowanie |
|---|---|---|
| 10 | ~80 ms | Starsza wartość domyślna, nadal akceptowalna |
| 12 | ~300 ms | Obecnie zalecany punkt bazowy |
| 13 | ~600 ms | Aplikacje o wyższym bezpieczeństwie |
| 14 | ~1.2 s | Paranoiczny; zauważalne opóźnienie logowania |
Każde zwiększenie podwaja współczynnik pracy. Jeśli opóźnienie logowania poniżej 500 ms jest krytyczne, trzymaj się 10-12.
Bajt wersji: 2a vs 2b vs 2y
$2a$— Oryginalna specyfikacja z 1999 roku. Większość bibliotek emituje hashe2a.$2b$— Rewizja z 2014 roku naprawiająca błąd obcinania w crypt_blowfish. Preferowana dla nowych hashy.$2y$— Tag specyficzny dla PHP, funkcjonalnie równoważny$2b$.
Wszystkie trzy weryfikują się wzajemnie; różni się tylko tag w ciągu hasha.
Przed czym chroni bcrypt
- Rainbow tables — Unikalna sól dla każdego hasha niweluje gotowe tablice wyszukiwania.
- Łamanie GPU/ASIC — Harmonogram klucza Blowfish jest zależny od pamięci i nieprzyjazny dla GPU. Nie tak nieprzyjazny jak Argon2, ale nadal wolny do brute force.
- Wycieki baz danych — Plaintext nie da się odzyskać z hasha bez brute force.
Przed czym bcrypt NIE chroni: słabe hasła (używaj minimalnej długości i sprawdzaj listy wycieków), credential stuffing (używaj drugiego czynnika), phishing.
Limit 72 bajtów
bcrypt używa tylko pierwszych 72 bajtów hasła. Dłuższe wejścia są obcinane po cichu, dlatego wiele bibliotek zaleca dziś wstępne haszowanie hasła SHA-256 przed podaniem go do bcrypt. Nowoczesne alternatywy (Argon2, scrypt) nie mają takiego limitu.
Najczęściej zadawane pytania
Tak do przechowywania haseł, przy koszcie ≥ 12. OWASP nadal wymienia go jako akceptowalny algorytm. Argon2id jest preferowanym wyborem dla nowych systemów, ale migracja starych hashy bcrypt ma niski priorytet.
Ponieważ sól jest generowana losowo dla każdego hasha. Weryfikacja bierze sól z zapisanego hasha, ponownie haszuje z nią podane hasło i porównuje wyniki.
Większość bibliotek tego nie udostępnia, i słusznie — przewidywalne sole niweczą ich sens. Używaj soli generowanej przez bibliotekę; to bezpieczna ścieżka.
Tak — współczynnik pracy jest symetryczny. Weryfikacja hasha o koszcie 14 trwa 16x dłużej niż weryfikacja hasha o koszcie 10. Dobierz go z myślą o przepustowości logowania.
Powiązane narzędzia
Szyfrowanie i odszyfrowywanie AES
Szyfruj i odszyfrowuj mało wrażliwy tekst z użyciem szyfrów AES OpenSSL. Hasło jest haszowane SHA-256, a wynik Base64 zawiera IV oraz szyfrogram.
Koder szyfru A1Z26
Koduj tekst szyfrem A1Z26 (A=1, B=2, ... Z=26) albo dekoduj sekwencję liczb z powrotem na litery, z własnym separatorem.
Koder szyfru Atbash
Koduj lub dekoduj tekst szyfrem Atbash, hebrajskim podstawieniem mapującym A-Z na Z-A. Ta sama operacja szyfruje i odszyfrowuje.
Generator hashy bcrypt
Generuj hashe bcrypt albo weryfikuj hasło plaintext względem istniejącego hasha bcrypt. Generowanie i weryfikacja obok siebie w jednym narzędziu.
Koder i dekoder Base32
Koduj i dekoduj ciągi Base32 alfabetem RFC 4648. Przydatne dla sekretów TOTP, tokenów niewrażliwych na wielkość liter i identyfikatorów wpisywanych przez ludzi.
Koder i dekoder Base85
Koduj i dekoduj Base85 w wariantach Adobe Ascii85 (PostScript/PDF) albo Z85 (ZeroMQ). Bardziej kompaktowy niż Base64 dla danych binarnych.