DevToolPal
UK

Генератор кодів 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-коді й порівнюйте коди сервера з показаними тут. Сервери зазвичай приймають також попередній і наступний коди, щоб урахувати розбіжність годинників.