Dla programistów
Jak długie powinno być hasło i jak wygenerować bezpieczne
Czy 8 znaków wystarczy, czy znaki specjalne coś zmieniają i kiedy lepsza jest fraza ze słów? Odpowiedzi ze źródeł oficjalnych i z obliczeń na ustawieniach generatora haseł.
- Redakcja HNarzędzi
- Publikacja:
Według NIST serwis, w którym samo hasło chroni konto, powinien wymagać co najmniej 15 znaków. Polski poradnik rządowy zaleca 12-14. Przy haśle losowym więcej daje długość niż mieszanie rodzajów znaków: 16 małych liter to 75,2 bita entropii, a 8 znaków ze wszystkimi zestawami tylko 50,9 bita. Hasło, które musisz zapamiętać, zbuduj z losowych słów wybranych przez generator, a nie z własnych skojarzeń. Resztę kont zabezpiecz menedżerem haseł i uwierzytelnianiem dwuskładnikowym (2FA).
Co mówią zalecenia
Źródła sprawdzone w październiku 2026.
| Źródło | Co zaleca |
|---|---|
| NIST SP 800-63B-4 (wersja ostateczna z 31 lipca 2025) | Serwis ma wymagać co najmniej 15 znaków, gdy hasło jest jedynym czynnikiem. Gdy hasło jest tylko jednym ze składników uwierzytelniania wieloskładnikowego, wystarczy 8. Serwis powinien dopuszczać hasła co najmniej 64-znakowe, przyjmować spacje i znaki Unicode, pozwalać wklejać hasło i działać z menedżerami haseł. Nie wolno narzucać reguł składu (np. „wielka litera i cyfra”) ani okresowej zmiany hasła. Zmianę trzeba wymusić, gdy są dowody, że hasło wyciekło. |
| gov.pl, Ministerstwo Cyfryzacji (4 maja 2023) | Co najmniej 12-14 znaków. Hasło można zbudować z trzech lub czterech losowych słów. Każde konto ma mieć inne hasło, a hasła warto trzymać w menedżerze haseł i dodać 2FA. |
| NCSC (Wielka Brytania), three random words (strona z 21 grudnia 2021) | Trzy losowe słowa jako hasło, które da się zapamiętać. Unikaj dat, imion bliskich i zwierząt, ulubionej drużyny oraz podmieniania liter na cyfry (0 za o), bo to znane sztuczki, a hasło nie robi się silniejsze. Zapisanie haseł jest dopuszczalne, jeśli trzymasz je w bezpiecznym miejscu. |
Liczby się różnią, bo dotyczą różnych sytuacji: NIST opisuje wymagania wobec serwisów, a gov.pl i NCSC rady dla użytkowników. Dla haseł z generatora nie ma powodu schodzić poniżej 15-16 znaków.
Skąd bierze się entropia i co pokazuje narzędzie
Entropia mierzy, ile prób zgadnięcia trzeba średnio wykonać. Dla hasła losowego wynosi bity = długość × log2(liczba możliwych znaków), a każdy dodatkowy bit podwaja liczbę prób. Wzór działa tylko wtedy, gdy znaki wybiera generator losowy. Hasło wymyślone przez człowieka nie ma takiej liczby, nawet jeśli wygląda na skomplikowane.
W teście ustawiliśmy w Generatorze haseł kilka konfiguracji w trybie „Hasło losowe” i odczytaliśmy wartości z interfejsu. Dla każdej konfiguracji wygenerowaliśmy 10 haseł, a wszystkie miały zadaną długość. Przy jednym zestawie znaków entropia z narzędzia zgadza się ze wzorem. Przy kilku narzędzie odejmuje hasła, w których brakuje któregoś zestawu, więc wynik jest nieco niższy od wzoru (te wiersze oznaczono gwiazdką).
| Ustawienia | Pula znaków | Wzór | Entropia w narzędziu (bity) | Siła | Czas złamania |
|---|---|---|---|---|---|
| 4 cyfry | 10 | 4 × log2(10) | 13,3 | Bardzo słabe | natychmiast |
| 8 małych liter | 26 | 8 × log2(26) | 37,6 | Średnie | 10 s |
| 8 znaków, wszystkie zestawy | 90 | 8 × log2(90)* | 50,9 | Średnie | 1 dzień |
| 12 znaków: litery i cyfry | 62 | 12 × log2(62)* | 71,3 | Silne | 4 tys. lat |
| 12 znaków, wszystkie zestawy | 90 | 12 × log2(90)* | 77,4 | Silne | 321 tys. lat |
| 16 małych liter | 26 | 16 × log2(26) | 75,2 | Silne | 69 tys. lat |
| 20 małych liter | 26 | 20 × log2(26) | 94,0 | Silne | 32 mld lat |
| 16 znaków: litery i cyfry | 62 | 16 × log2(62)* | 95,2 | Silne | 71 mld lat |
| 16 znaków, wszystkie zestawy | 90 | 16 × log2(90)* | 103,6 | Bardzo silne | ponad bilion lat |
| to samo bez podobnych znaków (I l 1 | O 0 o) | 83 | 16 × log2(83)* | 101,7 | Bardzo silne | ponad bilion lat |
* Wzór podaje górną granicę. Przy kilku zestawach narzędzie liczy dokładnie, ile haseł zawiera znak z każdego zestawu.
Pula to 26 małych liter, 26 wielkich, 10 cyfr i 28 symboli (!@#$%^&*()-_=+[]{};:,.<>/?~|). Poziom „Silne” narzędzie przyznaje od 60 do 99 bitów, a „Bardzo silne” od 100.
Czas złamania to średnia przy 10 mld prób na sekundę. Narzędzie podaje to założenie pod wynikiem: atak offline na wykradzioną bazę z szybkim hashem. Serwis, który przechowuje hasła algorytmem celowo wolnym (bcrypt, Argon2), wydłuża ten czas, a atak przez formularz logowania jest dużo wolniejszy. Liczba jest więc scenariuszem pesymistycznym, a nie przewidywaniem.
Długość czy znaki specjalne
Każdy znak z puli 26 liter dodaje 4,7 bita, a z puli 90 znaków 6,5 bita. Rozszerzenie puli działa raz, a długość działa na każdym znaku. Przy 8 małych literach (37,6 bita) dodanie wielkich liter, cyfr i symboli daje 50,9 bita, czyli 13,3 bita więcej. Dodanie 8 kolejnych małych liter daje 75,2 bita, czyli 37,6 bita więcej.
Stąd wynik z tabeli: 16 małych liter (75,2 bita) jest silniejsze niż 12 znaków z liter i cyfr (71,3 bita) i prawie tak silne jak 12 znaków ze wszystkimi zestawami (77,4 bita). 20 małych liter (94,0 bita) przewyższa 12 znaków z symbolami o 16,6 bita.

Hasło widoczne na zrzucie jest przykładem z testu. Nie używaj go.
W praktyce:
- Jeśli formularz odrzuca niektóre symbole, nie szukaj tych, które przechodzą. Wydłuż hasło i zostaw litery oraz cyfry: 16 takich znaków to 95,2 bita.
- Przy ograniczeniu długości po stronie serwisu ustaw maksimum, jakie przyjmie. NIST wskazuje, że serwis powinien dopuszczać co najmniej 64 znaki.
- W generatorze dodatkowe zestawy znaków nie szkodzą, bo każdy znak jest losowy. Podmiany robione ręcznie to co innego: według NCSC zamiana liter na podobne cyfry (0 za o) nie wzmacnia hasła, bo te sztuczki są znane.
Hasło ze słów, gdy musisz je zapamiętać
Tryb „Hasło-fraza (ze słów)” losuje słowa z wbudowanego słownika. Liczba słów to 3-12 (domyślnie 7), separator może być myślnikiem, kropką, podkreślnikiem, spacją lub może go nie być. Słownik ma 391 polskich słów, czyli log2(391) = 8,6 bita na słowo. Po wyłączeniu „Bez polskich znaków” lista nadal ma 391 pozycji. Narzędzie liczy bity = słowa × log2(391). Opcja „Dodaj cyfrę” dopisuje cyfrę do losowego słowa i dodaje log2(10 × liczba słów) bitów, czyli 6,1 bita przy 7 słowach. Wielka litera na początku słów i separator są stałe, więc bitów nie dodają.
| Ustawienia | Entropia w narzędziu (bity) | Siła | Czas złamania |
|---|---|---|---|
| 4 słowa | 34,4 | Słabe | 1 s |
| 5 słów | 43,1 | Średnie | 8 min |
| 6 słów | 51,7 | Średnie | 2 dni |
| 7 słów z cyfrą (domyślne) | 66,4 | Silne | 155 lat |
Z obliczeń w Node: 8 słów z cyfrą to 75,2 bita, a 12 słów bez cyfry 103,3 bita, czyli poziom „Bardzo silne”. Do hasła głównego menedżera haseł weź więcej słów niż domyślne 7.
Zalecenia gov.pl i NCSC mówią o trzech lub czterech słowach. Liczba słów sama nie wyznacza siły, bo ważny jest też rozmiar słownika. Przy słowniku narzędzia trzy słowa to zaledwie 25,8 bita, czyli mniej niż 6 losowych małych liter (28,2 bita). Dlatego nie kopiuj liczby „trzy”: sprawdź entropię w narzędziu i dobierz liczbę słów do niej. Lista słów jest częścią kodu strony, więc wzór zakłada, że atakujący ją zna.

Fraza na zrzucie to przykład z testu. Nie używaj jej. Słowa musi wybrać generator. NCSC odradza imiona, daty i ulubione drużyny, a własna fraza w rodzaju „AlaMaKota2026” nie ma entropii z tabeli.
Skąd generator bierze losowość
Kod Generatora haseł (plik logic.ts) działa tak:
- Liczby losowe pochodzą z
crypto.getRandomValues(), kryptograficznego generatora przeglądarki. Bufor ma 256 liczb 32-bitowych.Math.random()nie jest używany. - Wybór indeksu stosuje odrzucanie (rejection sampling): wartości z niepełnego, końcowego przedziału zakresu 2^32 są odrzucane i losowane od nowa. Prosty zapis
losowa % Nprzy N = 90 sprawiłby, że 76 z 90 znaków wypadałoby o jeden raz częściej na około 47,7 mln losowań (różnica rzędu 2 na 100 mln). Przy źródle 32-bitowym ta wada byłaby czysto teoretyczna, ale kod jej nie ma: odrzucanie działa przy wyborze znaków i słów. - Hasła powstają w przeglądarce, nie są wysyłane na serwer ani zapisywane. Po zamknięciu karty znikają.
Przy kilku zestawach znaków generator losuje cały ciąg z jednej puli i odrzuca wyniki, w których brakuje któregoś zestawu. Dzięki temu każde dozwolone hasło jest tak samo prawdopodobne, a narzędzie podaje dokładną entropię: log2 liczby haseł zawierających znak z każdego zestawu.
Menedżer haseł, 2FA i unikalne hasła
Najsilniejsze hasło nie pomoże, gdy trafi do wielu serwisów albo zostanie wpisane na fałszywej stronie. Źródła z tabeli powtarzają trzy rzeczy:
- Każde konto ma własne hasło, żeby wyciek z jednego serwisu nie otwierał pozostałych (gov.pl, NCSC).
- Hasła generuje i przechowuje menedżer haseł, który wypełnia je tylko na właściwej stronie, co utrudnia phishing. NCSC zaleca zabezpieczyć jego hasło główne weryfikacją dwuetapową. Opis menedżerów: NCSC (sprawdzone w październiku 2026).
- Włącz 2FA, bo hasło może wyciec mimo swojej siły (gov.pl).
Wniosek dla generatora: do kont trzymanych w menedżerze generuj hasła losowe o długości 16 lub więcej znaków. Hasło główne do menedżera i do komputera zrób z losowych słów, bo je wpiszesz z pamięci.
NIST nie zaleca okresowej zmiany haseł. Zmieniaj hasło po wycieku, po podejrzeniu włamania albo gdy ktoś je zobaczył.
Ograniczenia
- Entropia z narzędzia dotyczy haseł wygenerowanych przez narzędzie. Hasło przepisane z głowy, zmodyfikowane po wygenerowaniu lub wybrane „na wzór” generatora ma inną, zwykle znacznie niższą wartość.
- Czas złamania zakłada szybki hash i 10 mld prób na sekundę. Zależy od tego, jak serwis przechowuje hasła, czego narzędzie nie widzi.
- Długość nie chroni przed phishingiem, programem szpiegującym ani ujawnieniem hasła, które serwis zapisał jawnie.
- Suwak długości kończy się na 64, ale w polu obok możesz wpisać do 128 znaków. Fraza ma 3-12 słów.
- Serwis, który ogranicza długość lub zestaw znaków, może zmusić do krótszego hasła niż zalecane. Ustaw wtedy maksymalną dozwoloną długość.