4 Commits

Author SHA1 Message Date
e226864351 Update TOTP.php
- Добавлен метод `verify` для верификации TOTP с учётом возможных временных расхождений (например, из-за задержек в синхронизации времени). *Нужно проверять OTP не только для текущего временного интервала, но и для соседних интервалов (±1 или ±2 временных шага). Это стандартная практика, описанная в RFC 6238, чтобы учесть небольшие рассинхронизации между сервером и клиентским устройством (телефоном).* 

- Кэширование декодированного секрета:
	- Добавлено свойство `private string $decodedSecret`.
	- В конструкторе теперь вызывается `$this->base32decode($secret)` один раз, и результат сохраняется в `$decodedSecret`.
	- В методах `generate` и `verify` (через `computeOtp`) используется `$this->decodedSecret` вместо повторного вызова `base32decode`. Это снижает вычислительные затраты, так как декодирование Base32 выполняется только при создании объекта.

- Вынос логики OTP и константы:
	- Добавлен приватный метод computeOtp(int $timeCounter, int $digits): string, который содержит логику вычисления OTP (упаковка времени, HMAC-SHA1, извлечение и форматирование). Это устраняет дублирование кода из generate и verify.
	- В `generate` теперь просто вычисляется `$timeCounter` и вызывается `computeOtp`.
	- В `verify` используется `computeOtp` для генерации OTP на каждой итерации цикла.
	- Добавлены константы `DEFAULT_DIGITS = 6`, `DEFAULT_TIME_STEP = 30`, `DEFAULT_SECRET_LENGTH = 20` для параметров по умолчанию. Они используются в методах `generate`, `verify` и `generateSecret`, что делает код более декларативным и упрощает изменение значений в будущем.
2025-08-27 15:06:19 +00:00
1d70645f9e Update TOTP.php
PSR-1
2024-05-09 14:02:54 +00:00
3098126d3a Add TOTP.php 2024-05-09 13:48:45 +00:00
b22ae5e702 Initial commit 2024-05-09 13:47:44 +00:00