Generator kodów jednorazowych
OTP, PIN, kody zapasowe, rabatowe i tokeny HEX – do 500 kodów naraz z oceną odporności na zgadywanie.
-
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";
}
0 = bez grupowania
Ile błędnych prób dopuszczasz, zanim kod zostanie zablokowany. Służy do oceny ryzyka odgadnięcia.
Dotyczy tylko liter: same cyfry i HEX zostają bez zmian.
Zaawansowane: prefiks, ważność, seed
0 = bez limitu
Ten sam seed = te same kody (tylko do testów).
Kombinacje
różnych kodów przy tych ustawieniach
Entropia
na kod; prefiks i myślniki się nie liczą
Szansa odgadnięcia
0,0005 % przy 5 próbach. Niskie ryzyko (poniżej 1 na 100 000).
Ważność
5 min
Ile kombinacji daje kod: ściąga
| Zastosowanie | Liczba znaków (alfabet) | Długość | Kombinacje | Entropia [bit] | Szansa przy 5 próbach |
|---|---|---|---|---|---|
| PIN | 10 (cyfry) | 4 | 10 000 | 13,29 | 1 na 2 000 |
| Kod SMS / OTP | 10 (cyfry) | 6 | 1 000 000 | 19,93 | 1 na 200 000 |
| OTP 8 cyfr | 10 (cyfry) | 8 | 100 000 000 | 26,58 | 1 na 20 000 000 |
| Kod rabatowy (bez mylących znaków) | 24 (wielkie litery) | 8 | 110 075 314 176 | 36,68 | 1 na 22 015 062 835 |
| Kody zapasowe 2FA | 62 (litery i cyfry) | 16 | 4,77 × 10^28 | 95,27 | 1 na 9,53 × 10^27 |
| Token HEX | 16 (HEX) | 32 | 3,40 × 10^38 | 128 | 1 na 6,81 × 10^37 |
Jak liczymy odporność kodu
Liczba kombinacji to A^L, gdzie A to liczba dostępnych znaków, a L długość kodu. Entropia w bitach to L × log₂(A). Kod z 6 cyfr ma 10^6 = 1 000 000 kombinacji i 6 × log₂(10) ≈ 19,93 bitu. Szansa odgadnięcia przy k próbach to k / A^L, więc przy 5 próbach wynosi 1 na 200 000. Stały prefiks i myślniki nie zwiększają odporności.
Krótki kod wymaga limitu prób
Sześć cyfr wystarcza w kodach SMS i logowania, bo system blokuje kolejne próby i unieważnia kod po kilku minutach. Bez limitu prób i terminu ważności krótki kod da się odgadnąć automatem. Tokeny, których nikt nie limituje, rób dużo dłuższe: 32 znaki HEX to 128 bitów. Próg „OK” w kafelku (poniżej 1 na 100 000) jest orientacyjny.
Seed tylko do testów
Ten sam seed zawsze daje te same kody, co przydaje się w testach i danych przykładowych. Kody z seedem powstają z generatora mt_rand, który da się odtworzyć, więc nie nadają się do zabezpieczeń. Bez seeda używamy kryptograficznego generatora random_int(). Wygenerowanych kodów nie zapisujemy w historii ani w bazie.
Kody rabatowe i zapasowe w praktyce
Do kodów przepisywanych ręcznie włącz „Bez mylących znaków” i myślnik co 4 znaki. Excel po otwarciu pliku CSV potrafi usunąć zera z początku kodu, więc importuj kolumnę jako tekst. Kody zapasowe przechowuj w bazie jako skrót (hash), jak hasła. To losowe kody, nie TOTP liczone z czasu i klucza, więc nie zadziałają w aplikacjach uwierzytelniających.
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator kodów jednorazowych
Kody jednorazowe służą do uwierzytelniania dwuskładnikowego (2FA), potwierdzania operacji i odzyskiwania dostępu. Powinny być losowe i krótkotrwałe. Ten generator kodów jednorazowych tworzy od 1 do 500 kodów naraz, o długości od 3 do 64 znaków, z cyfr, liter, liter i cyfr albo znaków HEX. Od razu pokazuje liczbę kombinacji, entropię i szansę odgadnięcia przy limicie prób, który podasz. Gotową listę skopiujesz albo pobierzesz jako plik CSV.
Zastosowania i gotowe ustawienia
Każdy typ kodu ma w narzędziu przycisk z gotowymi ustawieniami. Po kliknięciu możesz dalej zmieniać długość, znaki i grupowanie.
| Typ | Zastosowanie | Gotowe ustawienie |
|---|---|---|
| OTP | kody 2FA, potwierdzenie SMS/e-mail | 6 cyfr, myślnik co 3 znaki, ważność 300 s |
| PIN | krótkie kody do kart i aplikacji | 4 cyfry, bez grupowania |
| Token | klucze API i linki jednorazowe | 32 znaki HEX (128 bitów) |
| Kody zapasowe | awaryjny dostęp do konta | 16 liter i cyfr, myślnik co 4 znaki |
| Kody rabatowe | kupony w sklepie, akcje promocyjne | 8 wielkich liter bez O i I, myślnik co 4 znaki |
Entropia
Entropia mierzy nieprzewidywalność kodu i jest wyrażana w bitach. Kod 6-cyfrowy ma około 20 bitów entropii, a 16-znakowy alfanumeryczny – ponad 90 bitów. Do 2FA wystarczy 20–30 bitów, pod warunkiem że kod szybko wygasa, a system blokuje go po kilku błędnych próbach.
Dlatego narzędzie pyta o limit prób w Twoim systemie. Szansa odgadnięcia to k / N^L, gdzie k to liczba dozwolonych prób. Przy 6 cyfrach i 5 próbach wynosi 1 na 200 000, przy 4-cyfrowym PIN-ie i tych samych 5 próbach już 1 na 2000.
Zasady bezpieczeństwa
- Kodu jednorazowego używaj tylko raz i krótko.
- Kody zapasowe przechowuj offline, a w bazie danych zapisuj je jako skrót (hash), tak jak hasła.
- Nie wysyłaj kodów tym samym kanałem co logowanie.
- Do długotrwałych haseł użyj generatora haseł z wysoką entropią.
Jak działa generator kodów jednorazowych
Generator losuje kod znak po znaku. Dla każdej pozycji wybierany jest niezależnie indeks z zakresu od 0 do N-1, gdzie N to liczba znaków w wybranym zestawie, a następnie znak stojący pod tym indeksem trafia do wyniku. Zestawy wbudowane w narzędzie mają dokładnie: 10 znaków dla cyfr (0123456789), 26 dla wielkich liter, 26 dla małych liter, 16 dla zapisu HEX (0123456789ABCDEF) i 62 dla liter i cyfr. Opcja „Bez mylących znaków” usuwa 0, 1, O, o, I oraz l, ale tylko z zestawów z literami: wielkie i małe litery mają wtedy po 24 znaki, a litery z cyframi 56. Cyfr i HEX ta opcja nie zmienia.
Gdy pole seed jest puste, każdy znak losuje kryptograficzny generator random_int() z PHP. Po wpisaniu seeda narzędzie używa mt_rand: ten sam seed zawsze daje te same kody, co przydaje się w testach, ale takie kody da się odtworzyć, więc nie nadają się do zabezpieczeń.
Kolejne losowania są niezależne i odbywają się ze zwracaniem, dlatego ten sam znak może wystąpić w kodzie wielokrotnie, a kolejność znaków ma znaczenie. Entropię takiego kodu liczymy ze wzoru H = L × log2(N), gdzie L to długość kodu, a N to liczba znaków w zestawie. Stały prefiks (np. LATO-) i myślniki z grupowania nie zwiększają entropii.
Drugi sposób patrzenia na to samo to liczba możliwych kombinacji równa N^L. Każde dodatkowe miejsce w kodzie mnoży liczbę kombinacji przez N: przy literach i cyfrach 62-krotnie, przy cyfrach dziesięciokrotnie. Opcja „Bez powtórzeń w partii” (domyślnie włączona) odrzuca kody, które już wypadły w tej samej partii. Jeśli zażądasz więcej kodów, niż istnieje kombinacji, narzędzie zgłosi błąd zamiast generować duplikaty.
Przykład krok po kroku: kod 6-cyfrowy i 8 liter i cyfr
- Ustawiamy długość 6 i znaki „Cyfry (0–9)”, czyli 10 znaków o indeksach od 0 do 9.
- Losowanie pierwszej pozycji daje indeks 4, któremu odpowiada znak 4.
- Kolejne niezależne losowania dają indeksy 0, 7, 9, 2 i 5, czyli znaki 0, 7, 9, 2 oraz 5.
- Sklejamy znaki w kolejności losowania i otrzymujemy kod 407925. Przy myślniku co 3 znaki narzędzie wyświetli go jako 407-925.
- Liczymy entropię: 6 × log2(10) ≈ 6 × 3,3219 ≈ 19,9 bita, a liczba możliwych kodów to 10^6 = 1 000 000. Przy limicie 5 prób szansa odgadnięcia wynosi 5 / 1 000 000, czyli 1 na 200 000.
- Dla porównania 8 pozycji z liter i cyfr (62 znaki) daje 8 × log2(62) ≈ 8 × 5,9542 ≈ 47,6 bita – ponad dwa razy więcej przy zaledwie dwóch dodatkowych znakach.
Entropia i liczba kombinacji według zestawu i długości
| Znaki (liczba znaków) | Długość kodu | Entropia (bity) | Liczba kombinacji |
|---|---|---|---|
| cyfry (10) | 4 | 13,3 | 10 000 |
| cyfry (10) | 6 | 19,9 | 1 000 000 |
| cyfry (10) | 8 | 26,6 | 100 000 000 |
| HEX (16) | 6 | 24,0 | 16 777 216 |
| HEX (16) | 8 | 32,0 | 4 294 967 296 |
| wielkie litery (26) | 6 | 28,2 | 308 915 776 |
| wielkie litery bez O i I (24) | 8 | 36,7 | 110 075 314 176 |
| litery i cyfry (62) | 8 | 47,6 | 218 340 105 584 896 |
| litery i cyfry (62) | 16 | 95,3 | ≈ 4,77 × 10^28 |
| HEX (16) | 32 | 128,0 | ≈ 3,40 × 10^38 |
Praktyczne wskazówki użycia
- Dobierz długość do kanału przekazu. Kod wpisywany ręcznie z SMS-a nie powinien być długi – 6 cyfr to około 19,9 bita i przy krótkim czasie ważności wystarcza. Kod wklejany z linku może być dłuższy.
- Kody zapasowe generuj partią. Przycisk „Kody zapasowe” ustawia 16 liter i cyfr z myślnikiem co 4 znaki; wygeneruj od razu 8–10 sztuk i zapisz je, zanim zapomnisz o procedurze odzyskiwania dostępu.
- Przy kodach przepisywanych z kartki lub ekranu włącz „Bez mylących znaków” i myślnik co 4 znaki. Klient nie pomyli wtedy O z 0 ani l z 1, a krótkie grupy łatwiej przepisać bez błędu.
- Plik CSV otwarty w Excelu może stracić zera z początku kodu (007123 zmieni się w 7123). Importuj kolumnę „kod” jako tekst.
- Sprawdź, jak Twój system reaguje na błędne próby, i wpisz ten limit w polu „Limit prób”.
Ograniczenia narzędzia
- Brak zgodności z TOTP. Narzędzie nie wyprowadza kodu z sekretu i znacznika czasu, więc nie zsynchronizuje się z aplikacjami uwierzytelniającymi ani nie odtworzy kodu po upływie okna czasowego.
- Seed oznacza przewidywalność. Kody z wpisanym seedem są powtarzalne i służą do testów oraz danych przykładowych. Do prawdziwych zabezpieczeń zostaw to pole puste.
- Ważność i limit prób to tylko parametry oceny. Generator nie unieważnia kodów po czasie ani nie blokuje prób – to zadanie Twojego systemu. Podana entropia opisuje pojedynczy kod; jeśli system pozwala na wiele prób pod rząd, realna ochrona jest niższa, niż wynikałoby to z liczby kombinacji.
- Unikalność obowiązuje w jednej partii. Dwie osobno wygenerowane listy mogą zawierać ten sam kod, więc przy kodach rabatowych porównaj nową partię z wydanymi wcześniej.
- Przechowywanie wyniku zależy od Ciebie. Narzędzie nie zapisuje wygenerowanych kodów w historii ani w bazie. Najczęściej wyciekają one ze schowka, notatnika albo wiadomości wysłanej do siebie.
Najczęstsze pytania
Czy wygenerowane kody są kryptograficznie bezpieczne?
Tak, jeśli pole seed zostanie puste: wtedy znaki losuje kryptograficzny generator random_int(). Kody z seedem powstają z mt_rand, da się je odtworzyć i nadają się tylko do testów.
Czym różni się ten generator od aplikacji TOTP?
TOTP to kod liczony ze wspólnego sekretu i bieżącego czasu, zwykle w oknach 30-sekundowych. To narzędzie losuje kody bez sekretu i czasu, więc nadaje się do PIN-ów, kodów zapasowych, rabatowych i testów.
Jak długi kod dla 2FA?
Standardowo 6 cyfr, przy ważności kilku minut i blokadzie po 3–5 błędnych próbach. Dłuższy kod i większy alfabet zwiększają entropię, ale utrudniają przepisywanie.
Czy kod jednorazowy może się powtórzyć?
W jednej partii nie, dopóki opcja „Bez powtórzeń w partii” jest włączona. Po jej wyłączeniu narzędzie pokazuje ryzyko duplikatu: dla 500 kodów 6-cyfrowych to około 12 %. Między osobnymi partiami powtórzenie jest zawsze możliwe.
Jaki zestaw znaków wybrać do kodów zapasowych?
Najlepiej litery i cyfry o długości 10–16 znaków, bo łączą duży alfabet z czytelną długością. Same cyfry przy tej samej długości dają znacznie mniej bitów entropii: 16 cyfr to około 53 bity, a 16 liter i cyfr około 95 bitów.
Jak przenieść kody do Excela lub sklepu internetowego?
Kliknij „Pobierz CSV”: plik kody-jednorazowe.csv ma jedną kolumnę „kod” w kodowaniu UTF-8. Przy imporcie ustaw tę kolumnę jako tekst, żeby zachować zera na początku.