Skip to content

Generator kodów TOTP / 2FA

Wygeneruj kod TOTP/2FA z sekretu Base32 — w 100% w przeglądarce, Twój sekret nigdy nie opuszcza urządzenia. Konfiguracja QR + weryfikacja kodu.

Bez śledzenia Działa w przeglądarce Bezpłatne
Obliczane lokalnie w Twojej przeglądarce — Twój sekret nigdy nie opuszcza urządzenia.
Opcje zaawansowane
Bieżący kod
------
Następny kod: ------
Zgodne z zachowaniem RFC 6238 / RFC 4226, z wyjściem porównanym z opublikowanymi wektorami testowymi oraz niezależną aplikacją authenticator — Go Tools Security Team · Jun 12, 2026

Czym jest generator kodów TOTP / 2FA?

Generator TOTP zamienia współdzielony sekret w rotujący kod jednorazowy, który napędza uwierzytelnianie dwuskładnikowe. TOTP — Time-based One-Time Password, zdefiniowany w RFC 6238 — bierze sekret Base32 i bieżący czas, dzieli czas na stałe kroki (domyślnie 30 sekund) i wykonuje HMAC na liczniku kroków, aby wyprowadzić krótki kod numeryczny. Ponieważ zarówno Twoja aplikacja authenticator, jak i serwer przechowują ten sam sekret i odczytują ten sam zegar, obliczają identyczny kod, nigdy nie wymieniając go przez sieć. Na tym właśnie polega istota 2FA: nawet jeśli Twoje hasło wycieknie, atakujący nadal potrzebuje kodu, który w tej chwili może wytworzyć wyłącznie Twój sekret.

"The TOTP algorithm is a time-based variant of the HOTP algorithm... TOTP = HOTP(K, T), where T is an integer representing the number of time steps between the initial counter time T0 and the current Unix time." — RFC 6238, Section 4

To narzędzie wykonuje trzy zadania na jednej stronie. Generuje kod na żywo z dowolnego sekretu Base32 wraz z odliczaniem i podglądem następnego kodu; konfiguruje zupełnie nowy sekret, budując URI otpauth:// i kod QR, który skanujesz do aplikacji authenticator; oraz weryfikuje kod względem sekretu z tolerancją ±1 kroku czasowego, tak jak prawdziwe serwery akceptują kod, który właśnie się obrócił. Wszystko działa przez natywne Web Crypto API przeglądarki, bez żadnych zależności i bez żądań sieciowych.

Programiści nieustannie sięgają po generator TOTP: aby odtworzyć dokładny kod, który pokazuje aplikacja użytkownika podczas debugowania logowania 2FA, aby utworzyć sekret i kod QR dla nowego konta, aby potwierdzić, że okno weryfikacji na serwerze odpowiada temu, czego doświadczają użytkownicy, albo aby zbudować deterministyczne dane testowe do testów end-to-end procesu dwuskładnikowego. Ponieważ sekret jest długowiecznym kluczem — każdy, kto go ma, może wygenerować każdy przyszły kod — należy go chronić jak hasło. Połącz to narzędzie z naszym generatorem losowych haseł, aby uzyskać silne hasła i kody odzyskiwania towarzyszące 2FA, oraz z generatorem kodów QR, gdy potrzebujesz samodzielnego obrazu rejestracyjnego. Aby podpisywać tokeny JSON Web Token, które często towarzyszą uwierzytelnionej sesji, zobacz enkoder JWT.

// Generate a TOTP code in the browser with the Web Crypto API
// (SHA-1, 6 digits, 30s period — RFC 6238 defaults)
async function generateTotp(base32Secret, time = Date.now()) {
  // Decode the Base32 secret to raw bytes (A-Z, 2-7)
  const alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
  let bits = '';
  for (const c of base32Secret.replace(/=+$/, '').toUpperCase())
    bits += alpha.indexOf(c).toString(2).padStart(5, '0');
  const bytes = new Uint8Array(
    bits.match(/.{8}/g).map((b) => parseInt(b, 2)));

  // Counter = number of 30s steps since the Unix epoch (8-byte big-endian)
  const counter = Math.floor(time / 1000 / 30);
  const msg = new Uint8Array(8);
  let c = counter;
  for (let i = 7; i >= 0; i--) { msg[i] = c & 0xff; c = Math.floor(c / 256); }

  const key = await crypto.subtle.importKey(
    'raw', bytes, { name: 'HMAC', hash: 'SHA-1' }, false, ['sign']);
  const hmac = new Uint8Array(await crypto.subtle.sign('HMAC', key, msg));

  // Dynamic truncation (RFC 4226) -> 6-digit code
  const off = hmac[hmac.length - 1] & 0x0f;
  const bin = ((hmac[off] & 0x7f) << 24) | (hmac[off + 1] << 16) |
              (hmac[off + 2] << 8) | hmac[off + 3];
  return (bin % 1_000_000).toString().padStart(6, '0');
}

const code = await generateTotp('JBSWY3DPEHPK3PXP');
// -> a 6-digit code that rotates every 30 seconds

Najważniejsze funkcje

Kod na żywo z odliczaniem

Wklej sekret Base32, a bieżący kod TOTP pojawi się natychmiast z pierścieniem odliczania 30 sekund i podglądem następnego kodu — bez przycisku Generuj, bez czekania.

Konfiguracja sekretu i kodu QR

Wygeneruj losowy sekret Base32, a następnie uzyskaj URI otpauth:// i kod QR do zeskanowania prosto do Google Authenticator, Authy lub 1Password.

Wbudowana weryfikacja kodu

Sprawdź kod względem sekretu z taką samą tolerancją ±1 kroku czasowego, jakiej używają prawdziwe serwery, dzięki czemu kod, który właśnie się obrócił, nadal się waliduje.

Konfigurowalny algorytm i cyfry

Przełączaj między SHA-1, SHA-256 i SHA-512, wybieraj 6 lub 8 cyfr i ustawiaj okres 30s lub 60s, aby spełnić wymagania dowolnego dostawcy.

Sekret nigdy nie opuszcza przeglądarki

Każdy kod jest obliczany lokalnie za pomocą natywnego Web Crypto API. Nic nie jest przesyłane, logowane ani przechowywane — w sposób weryfikowalny, nawet offline.

Zero zależności

Zbudowane wyłącznie na Web Crypto API przeglądarki — bez bibliotek zewnętrznych, bez telemetrii i bez jakichkolwiek żądań sieciowych.

Przykłady generatora TOTP

Standardowy 6-cyfrowy TOTP (SHA-1, 30s)

secret: JBSWY3DPEHPK3PXP
algorithm: SHA-1
digits: 6
period: 30s
Code: 282760  ·  expires in 30s

Kanoniczny sekret testowy z RFC 6238 z domyślnymi ustawieniami, których używa każda popularna aplikacja — SHA-1, 6 cyfr, okres 30 sekund. Kod jest oparty na czasie, więc dokładna wartość zależy od bieżącego czasu; narzędzie pokazuje odliczanie na żywo oraz następny kod.

8-cyfrowy TOTP dla firm (SHA-256)

secret: JBSWY3DPEHPK3PXP
algorithm: SHA-256
digits: 8
period: 30s
Code: 31094217  ·  expires in 30s

Niektóre systemy korporacyjne i o wysokim poziomie zabezpieczeń wydają 8-cyfrowe kody podpisane SHA-256 zamiast domyślnego SHA-1. Dopasuj algorytm, liczbę cyfr i okres dokładnie do tego, czego oczekuje Twój serwer, w przeciwnym razie wygenerowany kod nie przejdzie weryfikacji.

URI konfiguracyjny otpauth:// dla aplikacji authenticator

issuer: Acme
account: alice@example.com
secret: JBSWY3DPEHPK3PXP
otpauth://totp/Acme:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Acme&algorithm=SHA1&digits=6&period=30

Narzędzie buduje standardowy URI otpauth:// i renderuje go jako kod QR. Zeskanuj go aplikacją Google Authenticator, Authy lub 1Password — albo wklej URI bezpośrednio — aby zarejestrować sekret na swoim urządzeniu.

Jak używać generatora TOTP

  1. 1

    Wklej sekret Base32

    Na karcie Generuj wklej swój sekret Base32 (na przykład JBSWY3DPEHPK3PXP). Bieżący kod TOTP pojawi się natychmiast z odliczaniem 30 sekund — bez przycisku Generuj.

  2. 2

    Dostosuj opcje zaawansowane (opcjonalnie)

    Otwórz opcje zaawansowane, aby zmienić algorytm (SHA-1/256/512), liczbę cyfr (6 lub 8) albo okres (30 lub 60s) tak, by pasowały do tego, co wydał Twój dostawca.

  3. 3

    Skonfiguruj lub zweryfikuj

    Użyj karty Konfiguracja, aby wygenerować sekret i kod QR dla aplikacji authenticator, albo karty Weryfikuj, aby sprawdzić kod względem sekretu z tolerancją ±1 kroku czasowego.

Częste błędy

Niezgodny algorytm lub liczba cyfr

Sekret wydany dla SHA-256 lub 8 cyfr daje zupełnie inny kod przy domyślnych SHA-1 / 6 cyfr. Dopasuj parametry dostawcy dokładnie.

✗ Niepoprawne
secret + SHA-1/6 digits  // but server expects SHA-256/8
✓ Poprawne
algorithm: SHA-256, digits: 8  // match the otpauth:// URI

Dryf zegara

Jeśli zegar urządzenia odbiega o więcej niż jeden krok czasowy, kod nie przejdzie weryfikacji. Zsynchronizuj zegar systemowy przed porównaniem kodów.

✗ Niepoprawne
system clock 90s fast  // code is two steps ahead
✓ Poprawne
enable NTP / automatic time  // code aligns with server

Nieprawidłowy sekret Base32

Base32 używa wyłącznie A–Z i 2–7. Spacje z wydrukowanego klucza są w porządku, ale 0, 1 lub 8 nie jest prawidłowym Base32 i nie da się go zdekodować.

✗ Niepoprawne
secret: "JBSW 0NE8"  // contains 0 and 8
✓ Poprawne
secret: "JBSWY3DPEHPK3PXP"  // valid Base32

Typowe zastosowania

Debugowanie procesu logowania 2FA
Odtwórz dokładny kod, który pokazuje aplikacja authenticator użytkownika, aby prześledzić, dlaczego logowanie dwuskładnikowe jest odrzucane.
Rejestracja nowego konta
Wygeneruj świeży sekret Base32 i kod QR, a następnie zeskanuj go do Google Authenticator, Authy lub 1Password, aby skonfigurować 2FA.
Walidacja okna Twojego serwera
Weryfikuj kody względem sekretu, aby potwierdzić, że Twój backend akceptuje kod, który właśnie się obrócił, a odrzuca wygasły.
Budowanie danych testowych end-to-end
Oblicz deterministyczne kody TOTP ze znanego sekretu, aby napędzać zautomatyzowane testy procesu uwierzytelniania dwuskładnikowego.
Dopasowanie ustawień korporacyjnych
Odtwórz kody 8-cyfrowe lub SHA-256, gdy dostawca odbiega od domyślnych SHA-1 / 6 cyfr, aby zdebugować niezgodność.
Szybkie odzyskanie dostępu
Wygeneruj bieżący kod z zapasowego sekretu, gdy telefon jest niedostępny — używając jednorazowej kopii sekretu.

Szczegóły techniczne

Zgodność z RFC 6238 / RFC 4226
Implementuje TOTP zgodnie z RFC 6238 na bazie algorytmu dynamicznego skracania HOTP z RFC 4226, z wybieralnym SHA-1, SHA-256 i SHA-512.
Natywne HMAC Web Crypto
Kody są wyprowadzane przez crypto.subtle HMAC na liczniku kroków czasowych w formacie big-endian. Dekodowanie Base32 i skracanie odbywają się w całości w przeglądarce.
Standardowe URI otpauth://, zero zależności
URI konfiguracyjne są zgodne z Key Uri Format (otpauth://totp) z parametrami issuer, algorytm, cyfry i okres. Bez bibliotek zewnętrznych, bez żądań sieciowych.

Dobre praktyki

Traktuj sekret jak hasło
Każdy, kto ma sekret Base32, może wygenerować każdy przyszły kod. Przechowuj go w menedżerze sekretów, nigdy w systemie kontroli wersji, i preferuj tutaj sekrety testowe.
Synchronizuj zegary
TOTP zależy od dokładnego czasu. Włącz synchronizację czasu sieciowego na serwerach i urządzeniach, aby kody pokrywały się w oknie weryfikacji.
Trzymaj się domyślnych ustawień, chyba że jest wymagane inaczej
SHA-1, 6 cyfr i okres 30 sekund maksymalizują zgodność z aplikacjami. Przełączaj na 8 cyfr lub SHA-256/512 tylko wtedy, gdy wymaga tego Twój dostawca.

FAQ generatora TOTP / 2FA

Czy generator TOTP / 2FA online jest bezpieczny w użyciu?
W przypadku tego — tak, a powodem jest to, że nic nigdy nie opuszcza Twojej przeglądarki. Sekret Base32, który wpisujesz, URI otpauth:// oraz wygenerowany kod są w całości obliczane lokalnie za pomocą natywnego Web Crypto API. Nie ma żadnych żądań sieciowych, żadnego logowania, żadnego przechowywania ani analityki powiązanej z Twoimi danymi — możesz to sprawdzić, odłączając się od internetu i obserwując, że narzędzie nadal działa. To przeciwieństwo podejrzanego generatora, który wysyła Twój sekret metodą POST na serwer, gdzie operator mógłby w nieskończoność generować Twoje kody. Sekret TOTP to długowieczny współdzielony klucz, więc najbezpieczniejszym nawykiem pozostaje używanie jednorazowych lub testowych sekretów, gdy chcesz jedynie poeksperymentować.
Czym jest TOTP i czym jest sekret Base32?
TOTP (Time-based One-Time Password, zdefiniowany w RFC 6238) to algorytm stojący za rotującymi 6-cyfrowymi kodami w aplikacjach authenticator. Łączy współdzielony sekret z bieżącym czasem, podzielonym na stałe kroki (zwykle 30 sekund), za pomocą HMAC, tworząc krótki kod, który zarówno Twoje urządzenie, jak i serwer mogą obliczyć niezależnie. Sekret to współdzielony klucz i niemal zawsze zapisywany jest w Base32 — wielkie litery A–Z oraz cyfry 2–7 — ponieważ ten alfabet nie rozróżnia wielkości liter i łatwo go wpisać lub zakodować w kodzie QR. Ciąg JBSWY3DPEHPK3PXP to dobrze znany testowy sekret z RFC.
Dlaczego wygenerowany kod różni się od kodu w aplikacji authenticator na moim telefonie?
Cztery rzeczy muszą się zgadzać, aby dwa kody TOTP były identyczne. Po pierwsze zegar: TOTP zależy od bieżącego czasu, więc jeśli zegar komputera lub telefonu odbiega o więcej niż jeden krok, kody się rozjeżdżają — zsynchronizuj zegar systemowy i spróbuj ponownie. Po drugie algorytm: to narzędzie domyślnie używa SHA-1 (czego używa większość aplikacji), ale jeśli Twój sekret wydano dla SHA-256 lub SHA-512, musisz to wybrać również tutaj. Po trzecie cyfry i okres: 6 vs 8 cyfr albo okno 30s vs 60s dają zupełnie inne kody. Po czwarte sam sekret — jeden błędnie wpisany znak Base32 zmienia każdy kod. Dopasuj wszystkie cztery, a kody będą zgodne.
Jaka jest różnica między TOTP a HOTP?
Oba pochodzą z tej samej rodziny haseł jednorazowych opartych na HMAC, ale różnią się tym, co napędza kod. HOTP (RFC 4226) jest oparty na liczniku: każdy kod jest powiązany z rosnącym licznikiem, więc kod pozostaje ważny, dopóki nie zostanie użyty, a licznik się nie zwiększy. TOTP (RFC 6238) jest oparty na czasie: zastępuje licznik bieżącym czasem podzielonym na stałe kroki, dzięki czemu kody rotują automatycznie co 30 sekund. TOTP to w istocie po prostu HOTP z licznikiem ustawionym na liczbę kroków czasowych od epoki Uniksa. To narzędzie generuje TOTP, którego domyślnie używają Google Authenticator, Authy i 1Password.
Czy mogę używać kodów 8-cyfrowych albo SHA-256 / SHA-512?
Tak. Otwórz opcje zaawansowane, aby przełączyć algorytm na SHA-256 lub SHA-512, ustawić cyfry na 8 albo zmienić okres na 60 sekund. Te ustawienia istnieją, ponieważ niektóre systemy korporacyjne i bankowe wymagają dłuższych kodów lub silniejszych skrótów. Mimo to przytłaczająca większość usług — i każda popularna konsumencka aplikacja authenticator — używa domyślnych wartości SHA-1, 6 cyfr i okresu 30 sekund, więc pozostaw je bez zmian, chyba że instrukcje konfiguracji Twojego dostawcy mówią inaczej. Cokolwiek wybierzesz, URI otpauth:// generowany przez narzędzie zapisuje te parametry, dzięki czemu Twoja aplikacja poprawnie zarejestruje sekret.
Jak dodać ten sekret do Google Authenticator, Authy lub 1Password?
Przejdź do karty Konfiguracja, aby wygenerować (lub wkleić) sekret, a następnie albo zeskanuj kod QR, albo skopiuj URI otpauth://. W Google Authenticator lub Authy dotknij przycisku dodawania i wybierz Zeskanuj kod QR, aby skierować aparat na kod QR na ekranie, albo wybierz Wprowadź klucz konfiguracyjny i wklej sekret Base32 wraz z pasującą nazwą konta i algorytmem. W 1Password edytuj element logowania, dodaj pole One-Time Password i wklej URI otpauth:// bezpośrednio. Potrzebujesz samodzielnego obrazu QR do dokumentacji? Skorzystaj z naszego generatora kodów QR, a dla losowych sekretów i kodów odzyskiwania wokół niego — z generatora losowych haseł.

Powiązane narzędzia

Zobacz wszystkie narzędzia →