Generator hasha hasła
Zahashuj hasło algorytmem bcrypt lub Argon2id
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator hasha hasła — bcrypt i Argon2id
Hasła w bazie danych należy przechowywać wyłącznie w postaci hasha, nigdy jawnie. bcrypt i Argon2id to dwa nowoczesne, celowo wolne algorytmy, które utrudniają atak słownikowy i brute-force.
bcrypt czy Argon2id?
| Algorytm | Zalety | Uwagi |
|---|---|---|
| bcrypt | sprawdzony, szeroko wspierany | limit 72 bajtów hasła |
| Argon2id | odporny na ataki GPU, zwycięzca konkursu PHC | wymaga nowszego środowiska |
Parametry kosztu
- bcrypt cost 10–12 — dobry kompromis między bezpieczeństwem a czasem logowania.
- Argon2id — reguluje się pamięcią, liczbą iteracji i wątkami; 64 MB i 4 iteracje to rozsądny start.
- Im wyższy koszt, tym wolniejsze łamanie — ale też wolniejsze logowanie.
Jak używać w kodzie?
W PHP użyj password_hash() do utworzenia hasha i password_verify() do sprawdzenia. Hash zawiera sól i parametry, więc do weryfikacji wystarczy sam hash i hasło.
Jak działa generator hasha hasła
Hashowanie hasła polega na przepuszczeniu go przez funkcję jednokierunkową, która z dowolnego wejścia tworzy wynik o stałej długości i której nie da się odwrócić. Do każdego wywołania generator dokłada świeżą, losową sól, więc ten sam tekst hasła daje za każdym razem inny hash. Sól oraz wszystkie parametry kosztu są zapisywane w samym ciągu hasha, dlatego do weryfikacji wystarczy hash z bazy i hasło podane przy logowaniu — nie trzeba przechowywać tych wartości osobno w konfiguracji aplikacji.
bcrypt to funkcja oparta na szyfrze Blowfish, a jej parametr cost jest wykładnikiem potęgi dwójki: cost 10 oznacza 2 do potęgi 10, czyli 1024 rund, a cost 12 to 2 do potęgi 12, czyli 4096 rund. Każde zwiększenie cost o 1 podwaja czas liczenia, więc różnica między 10 a 12 to dokładnie czterokrotność pracy. bcrypt ma jednak twardy limit wejścia: przetwarza tylko pierwsze 72 bajty hasła, a wszystko dłuższe jest obcinane.
Argon2id działa inaczej — zamiast samych rund mnoży pracę przez zajętość pamięci. Przy ustawieniu 64 MB i 4 iteracjach każde hashowanie wypełnia i przetwarza 64 MB cztery razy, co daje 256 MB pracy pamięciowej na jedno hasło. Taka konstrukcja utrudnia atak z użyciem kart graficznych, bo GPU ma dużo rdzeni, ale nie ma nieograniczonej pamięci na każdy równoległy wątek. Dodatkowy parametr liczby wątków pozwala wykorzystać wiele rdzeni procesora.
Przykład krok po kroku: hasło 80-bajtowe i cost 12
- Przyjmij, że użytkownik ustawia hasło złożone z 80 znaków ASCII, czyli dokładnie 80 bajtów.
- Generator wybiera algorytm bcrypt i parametr cost 12, co odpowiada 2 do potęgi 12, czyli 4096 rundom obliczeń.
- bcrypt skraca wejście do 72 bajtów, więc do funkcji trafia tylko pierwsze 72 bajty — ostatnie 8 bajtów hasła nie ma żadnego wpływu na wynik.
- Do tych 72 bajtów dokładana jest losowa sól, a całość przechodzi przez 4096 rund. Wynikiem jest gotowy hash, który zawiera już sól i parametr kosztu.
- Gdy ten sam użytkownik loguje się ponownie, wpisuje pełne 80 znaków. System ponownie obcina je do 72 bajtów, odczytuje sól i cost z zapisanego hasha i liczy drugi hash. Oba ciągi są identyczne, więc weryfikacja przechodzi.
- Ten sam test z cost 10 zamiast 12 zmniejsza liczbę rund z 4096 do 1024, czyli dokładnie czterokrotnie — hash wyjdzie inny, a logowanie będzie szybsze. Dla porównania Argon2id z pamięcią 64 MB i 4 iteracjami wykonuje 64 MB × 4 = 256 MB pracy pamięciowej na jedno hasło.
Parametry kosztu i limity — tabela referencyjna
| Parametr | Wartość | Co to oznacza w praktyce |
|---|---|---|
| bcrypt, dolny zalecany cost | 10 | 2 do potęgi 10 = 1024 rund — najmniejszy sensowny koszt |
| bcrypt, górny zalecany cost | 12 | 2 do potęgi 12 = 4096 rund, czyli 4 razy więcej pracy niż przy cost 10 |
| bcrypt, limit długości hasła | 72 bajty | Wszystko powyżej 72 bajtów jest obcinane i nie wpływa na hash |
| Argon2id, pamięć | 64 MB | Rozsądny punkt startowy; podnoszenie pamięci najbardziej utrudnia atak na GPU |
| Argon2id, liczba iteracji | 4 | Każda iteracja ponownie przetwarza cały przydział pamięci |
| Argon2id, praca pamięciowa przy 64 MB i 4 iteracjach | 64 MB × 4 = 256 MB | Tyle pamięci przechodzi przez funkcję przy jednym hashowaniu |
| Argon2id, liczba wątków | regulowana | Szybsze hashowanie na wielu rdzeniach, bez zmiany wyniku |
| Sól | losowa dla każdego wywołania | Identyczne hasła dają różne hashe, co jest zachowaniem poprawym |
Praktyczne wskazówki użycia
- Zacznij od cost 10 i podnoś go razem ze sprzętem — dopóki logowanie na serwerze produkcyjnym mieści się w akceptowalnym czasie, warto iść w stronę 12. Nie ustawiaj kosztu na sztywno na jednej maszynie i nie przenoś go bez testu na słabszy serwer.
- Pilnuj limitu 72 bajtów w bcrypt — jeśli dopuszczasz długie hasła albo znaki spoza ASCII, pamiętaj, że końcówka hasła nie wpływa na wynik. W takiej sytuacji bezpieczniej jest wybrać Argon2id.
- W Argon2id dostrajaj najpierw pamięć, potem iteracje — 64 MB i 4 iteracje to punkt wyjścia. Podniesienie pamięci mocniej zwiększa koszt łamania niż dodanie kolejnych iteracji.
- Nie przenoś hashy między środowiskami bez sprawdzenia parametrów — hash bcrypt z kosztem 12 będzie weryfikowany wolniej na maszynie, która była projektowana pod koszt 10.
- Traktuj wygenerowany hash jako dane wrażliwe — sam hash nie jest hasłem, ale nadal pozwala przeprowadzić atak offline, jeśli wycieknie razem z bazą.
Ograniczenia narzędzia i rzeczy, które zaburzają wynik
- Nie zmierzy czasu na Twoim serwerze — generowanie hasha zależy od procesora i obciążenia maszyny. Bez benchmarku po stronie aplikacji nie wiadomo, czy wybrany koszt jest dla Ciebie akceptowalny.
- Hash nie uratuje słabego hasła — wolny algorytm tylko spowalnia atak słownikowy. Krótkie i popularne hasło nadal padnie, choć zajmie to dłużej.
- Brak obsługi dodatkowego sekretu — narzędzie liczy hash wyłącznie z hasła i soli. Jeśli w produkcji używasz dodatkowego klucza po stronie serwera, wynik będzie inny i nie da się go bezpośrednio porównać.
- Nie sprawdza polityki haseł ani wycieków — nie odrzuci hasła z listy znanych wycieków ani nie ostrzeże o zbyt prostej konstrukcji. To zadanie osobnego mechanizmu w aplikacji.
Najczęstsze pytania
Dlaczego hash nie da się „odszyfrować”?
To funkcja jednokierunkowa. Przy logowaniu ponownie hashuje się podane hasło i porównuje wyniki w bezpieczny sposób.
Czy mogę użyć tego samego hasha na kilku kontach?
Nie. Każdy hash zawiera losową sól, więc nawet identyczne hasła dają różne wartości — to celowe i poprawne.
Czy hasło jest bezpieczne?
Hash liczony jest po stronie serwera; nie zapisujemy hasła w bazie ani w logach. Mimo to nie testuj tu prawdziwych haseł produkcyjnych. Zobacz też sprawdzanie bcrypt.
Czy bcrypt obcina hasło po 72 bajtach?
Tak. bcrypt przetwarza tylko pierwsze 72 bajty, a resztę pomija. Jeśli więc dwa hasła mają identyczny początek 72 bajtów, dadzą ten sam hash niezależnie od dalszej treści.
Ile trwa hashowanie bcrypt z cost 12?
Nie da się podać jednej liczby w milisekundach, bo zależy to od procesora i obciążenia serwera. Wiadomo natomiast, że cost 12 oznacza 4096 rund, czyli czterokrotnie więcej pracy niż cost 10 z 1024 rundami.
Czym różni się Argon2id od Argon2i i Argon2d?
Argon2id łączy dwa podejścia do dostępu do pamięci, przez co jest odporny zarówno na ataki z użyciem GPU, jak i na ataki kanałami bocznymi. Argon2id jest rekomendowanym wariantem i to on jest dostępny w tym narzędziu.
Czy hash bcrypt można przenieść do innego systemu?
Tak, hash zapisuje w sobie sól i parametr kosztu, więc wystarczy go skopiować i weryfikować tym samym algorytmem. Trzeba tylko pilnować, żeby system docelowy obsługiwał bcrypt i miał podobną wydajność.
Jak długo powinno trwać hashowanie hasła przy logowaniu?
Nie ma jednej poprawnej liczby — chodzi o to, by było zauważalne dla atakującego, a niezauważalne dla użytkownika. Praktyczna metoda to podnoszenie kosztu tak długo, aż logowanie zacznie wyraźnie zwalniać, i cofnięcie o jeden stopień.