Do czego służy
bcrypt to funkcja haszująca hasła zaprojektowana tak, by była wolna. W przeciwieństwie do MD5 czy SHA-256, które można liczyć miliardy razy na sekundę, bcrypt ma regulowany koszt, przez co każda próba zgadnięcia jest droga dla atakującego, który ukradł bazę danych. Obok Argon2 i scrypt to wciąż jeden z najpopularniejszych sposobów przechowywania haseł.
Narzędzie robi dwie rzeczy:
- Haszuj: zamienia hasło w hash bcrypt z wybranym kosztem i prefiksem wersji.
- Sprawdź: weryfikuje, czy hasło pasuje do istniejącego hasha bcrypt, na przykład z twojej bazy lub pliku seed frameworka.
Jak używać
- Wpisz Hasło albo kliknij Przykład.
- W trybie Haszuj wybierz Koszt i Wersję. Hash pojawia się od razu; kliknij Nowa sól, aby dostać inny.
- W trybie Sprawdź wklej Hash bcrypt do sprawdzenia. Wynik pokaże, czy hasło pasuje.
Jak czytać hash bcrypt
Hash taki jak $2b$10$./3kakECWB0QfIgYzIqciuv449HNnwGbgExtJQQwQ1MofonthOdoK ma cztery części: wersję 2b, koszt 10 (2¹⁰ rund przygotowania klucza), 22-znakową sól i 31-znakową sumę kontrolną. Wszystko, czego serwer potrzebuje do późniejszej weryfikacji hasła, mieści się w tym jednym ciągu, więc przechowujesz tylko hash.
Ograniczenia
bcrypt odczytuje tylko pierwsze 72 bajty hasła. Dłuższe hasła lub hasła z wieloma znakami spoza ASCII (każdy zajmuje 2–4 bajty w UTF-8) są po cichu obcinane. Narzędzie ostrzeże cię, gdy tak się stanie. Jeśli musisz akceptować bardzo długie frazy, najpierw je zahaszuj albo rozważ Argon2id.
FAQ
› Dlaczego dla tego samego hasła za każdym razem dostaję inny hash?
Każdy hash używa nowej losowej soli o długości 16 bajtów, zapisanej w samym hashu. To celowe: takie same hasła nie dają takich samych hashy. Aby sprawdzić hasło, użyj trybu Sprawdź zamiast porównywać ciągi hashy.
› Jaki koszt wybrać?
Wybierz najwyższy koszt, na jaki serwer może sobie pozwolić przy każdym logowaniu, dziś zwykle 10–12. Każdy krok podwaja pracę. Zmierz na sprzęcie produkcyjnym; częstym celem jest 100–300 ms na hash.
› Czym różnią się $2a$, $2b$ i $2y$?
To ten sam algorytm. $2b$ to obecny prefiks OpenBSD, $2y$ zapisuje password_hash w PHP, a $2a$ to starszy wariant. Większość bibliotek akceptuje wszystkie trzy, więc wybierz ten, którego oczekuje twój system.
› Czy moje hasło jest gdzieś wysyłane?
Nie. Haszowanie i sprawdzanie odbywają się w przeglądarce. Hasło i sprawdzany hash istnieją tylko w pamięci tej strony; nie są zapisywane ani dodawane do linków udostępniania.