Хеши/крипто

TOTP Generator/Verifier

Одноразовые коды по времени (TOTP, RFC 6238) — генерация текущего кода из секрета и проверка введённого кода с учётом дрейфа времени.

------


                    

TOTP (Time-based One-Time Password, RFC 6238) is a two-factor authentication algorithm that generates a one-time code from a secret and the current time. It's exactly what runs under the hood in Google Authenticator, Authy, and similar apps.

How to use it

Common uses

Things to keep in mind

A TOTP code is only valid for a short window (usually 30 seconds) — that time limit is the main protection, not the secret alone.

Code accuracy depends directly on the device's clock being synced; a noticeable clock drift is the most common cause of rejected 2FA codes.

Статья об этом инструменте: TOTP: как работают одноразовые коды в приложениях-аутентификаторах

Часто задаваемые вопросы

Почему сгенерированный код так быстро истекает?

Коды TOTP привязаны ко времени — по умолчанию они обновляются каждые 30 секунд, вычисляясь из текущего Unix-времени и общего секрета. Это короткое окно ограничивает, как долго утёкший код остаётся полезным.

Что произойдёт, если часы моего устройства рассинхронизированы?

TOTP полагается на то, что обе стороны примерно согласны о текущем времени. Большинство приложений-аутентификаторов и серверов допускают небольшое отклонение (обычно один временной шаг), но большее расхождение приведёт к отклонению верных кодов.

Отправляется ли мой секретный ключ куда-либо при генерации кода здесь?

Нет. Код TOTP вычисляется полностью в вашем браузере — секретный ключ никогда не покидает ваше устройство.

Защищает ли TOTP от фишинга?

Не полностью. Если жертва вводит пароль и текущий TOTP-код на поддельном сайте, злоумышленник может мгновенно использовать оба значения на настоящем сайте, пока код ещё действителен. От такой атаки в реальном времени защищают только аппаратные ключи по стандарту FIDO2/WebAuthn.

Почему сервер принимает и предыдущий временной интервал, а не только текущий?

Это компенсирует небольшую сетевую задержку между генерацией кода на телефоне и моментом, когда сервер его получает и проверяет. Без такого допуска легитимные коды иногда отклонялись бы из-за обычной задержки в несколько секунд.

Статьи: Хеши/крипто

Hash Generator: чем MD5, SHA-1 и SHA-256 отличаются друг от друга

Почему MD5 до сих пор используют для проверки целостности файлов, но не для паролей.

Checksum Verifier: как проверить, что файл не повреждён

Почему совпадение контрольной суммы подтверждает целостность файла, но не то, кто его создал.

HMAC: чем хеш с ключом отличается от обычного хеша

Почему обычный SHA-256 не защищает от подделки сообщения, а HMAC — защищает.

Bcrypt: почему пароли хешируют медленно, а не быстро

Почему быстрый SHA-256 — плохая идея для паролей, а медленный bcrypt — правильная.

UUID: как генерируют идентификаторы, которые почти никогда не повторяются

Почему UUID v4 можно генерировать независимо на миллионах машин без риска коллизий.

Генератор паролей: что на самом деле делает пароль устойчивым

Почему длинный пароль из словаря надёжнее короткого с символами и цифрами.

AES: как работает симметричное шифрование

Почему один и тот же ключ шифрует и расшифровывает данные в AES, и чем это отличается от асимметричного шифрования.

Argon2: почему этот алгоритм победил в конкурсе на хеширование паролей

Чем Argon2 лучше защищает от атак на видеокартах, чем более старые алгоритмы хеширования паролей.

Scrypt: зачем алгоритму нужно много памяти

Почему scrypt намеренно требует много памяти, чтобы усложнить перебор на ASIC-устройствах.

PBKDF2: самый старый стандарт растяжения ключей

Почему рекомендуемое количество итераций PBKDF2 растёт с каждым годом.

X.509: что внутри SSL-сертификата

Что именно браузер проверяет в сертификате сайта, прежде чем показать зелёный замочек.

PGP: как работает шифрование с открытым и приватным ключом

Почему можно свободно делиться публичным ключом PGP, но не приватным.