DevToolPal
RU

Генератор кодов TOTP / HOTP

Генерирует коды двухфакторной аутентификации (TOTP и HOTP) по секрету Base32 или URI otpauth://: SHA-1/256/512, 6–8 цифр и обратный отсчёт в реальном времени.

Работает локально, без загрузки на сервер

Параметры

Тип
Цифр
Интервал

Секрет (Base32) или URI otpauth://

Коды

Здесь появится результат

Что делает инструмент

Приложения двухфакторной аутентификации — Google Authenticator, Microsoft Authenticator, 1Password — показывают шестизначные коды, которые меняются каждые 30 секунд. Каждый код — одноразовый пароль, вычисленный из общего секрета: TOTP (RFC 6238) использует время, HOTP (RFC 4226) — счётчик. Инструмент вычисляет те же коды из секрета, чтобы вы могли протестировать настройку 2FA, отладить серверную реализацию или проверить, каким должен быть код.

Он показывает текущий код с обратным отсчётом, а также предыдущий и следующий коды, которые серверы часто принимают, чтобы покрыть небольшие расхождения часов.

Как пользоваться

  1. Вставьте секрет Base32 (буквы A–Z и цифры 2–7; пробелы и регистр не важны) или целиком URI otpauth:// из QR-кода. Нажмите Пример, чтобы попробовать.
  2. Выберите TOTP или HOTP и задайте алгоритм, число цифр и интервал как в аккаунте. Настройки из URI otpauth имеют приоритет.
  3. Для HOTP введите счётчик и переходите между кодами кнопкой Счётчик +1.
  4. Скопируйте текущий код. Обратный отсчёт показывает, сколько он ещё действителен.

Пример

Демонстрационный секрет JBSWY3DPEHPK3PXP — это байты «Hello!» и 0xDEADBEEF в Base32. URI ниже, в том виде, в каком он закодирован в QR-коде, описывает аккаунт, использующий этот секрет с настройками по умолчанию:

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

В Unix-время 1700000000 этот секрет даёт код 324 550, а до конца окна остаётся 10 секунд.

Как вычисляется код

Секрет декодируется из Base32 в байты. Для TOTP счётчик — это Unix-время в секундах, делённое на интервал и округлённое вниз. Счётчик записывается в 8 байт и подписывается HMAC с секретом. Динамическое усечение выбирает 4 байта из результата HMAC по его последнему полубайту, и число приводится к нужному количеству цифр с сохранением ведущих нулей.

Частые вопросы

› Почему мой код не совпадает с кодом в приложении-аутентификаторе?

Коды TOTP зависят от часов, поэтому сначала проверьте, что время на устройстве устанавливается автоматически. Затем убедитесь, что алгоритм, число цифр и интервал совпадают с настройками аккаунта. Большинство сервисов использует SHA-1, 6 цифр и 30 секунд, а приложения-аутентификаторы игнорируют другие настройки, если они не указаны в QR-коде.

› Чем TOTP отличается от HOTP?

TOTP (RFC 6238) использует в качестве счётчика текущее время, делённое на интервал, поэтому код меняется каждые 30 секунд. HOTP (RFC 4226) использует счётчик, который увеличивается на единицу при каждом использованном коде. Оба пропускают секрет и счётчик через HMAC и берут последние 6–8 цифр.

› Сохраняется ли мой секрет или отправляется куда-либо?

Нет. Коды вычисляются в браузере с помощью Web Crypto API. Секрет не сохраняется, не попадает в адресную строку и не включается в ссылки для отправки; ссылка содержит только настройки. Тем не менее секрет 2FA даёт полный доступ ко второму фактору, поэтому вставляйте только свои секреты.

› Можно ли использовать инструмент при внедрении 2FA в своё приложение?

Да. Нажмите «Случайный секрет», чтобы создать 160-битный секрет Base32, передайте его пользователям в URI otpauth:// или QR-коде и сравнивайте коды сервера с показанными здесь. Серверы обычно принимают также предыдущий и следующий коды, чтобы учесть расхождение часов.