imseyed / auth2fa
PHP 库提供生成基于时间的单次密码(TOTP)和基于HMAC的单次密码(HOTP)的功能,这些功能常用于双因素认证(2FA)系统。
v1.1.2
2024-08-06 09:00 UTC
Requires
- php: >=7.0
This package is auto-updated.
Last update: 2024-09-06 09:14:30 UTC
README
此PHP库提供生成基于时间的单次密码(TOTP)和基于HMAC的单次密码(HOTP)的功能,这些功能常用于双因素认证(2FA)系统。
特性
- TOTP生成:生成基于时间的单次密码。
- HOTP生成:生成基于HMAC的单次密码。
- 随机密钥生成:为TOTP和HOTP生成随机密钥。
使用方法
通过composer安装
composer require imseyed/auth2fa
TOTP生成
Auth2FA::TOTP
方法使用提供的密钥和可选的时间片生成一个 基于时间的单次密码。 totp.example.php
$totp = imseyed\Auth2FA::TOTP($secret, $timeSlice); /* $totp is a OPT code like: 458905 */
如果您想显示TOTP代码的过期时间,必须使用 Auth2FA::expire_time
。该方法返回一个Unix时间戳。
$expirationTime = imseyed\Auth2FA::expire_time($timeSlice); echo "Expire on ".date("H:i:s", $expirationTime)." (".($expirationTime - time())."s remind)"; /* $expirationTime is a unix timestamp like: 1722929683 */
HOTP生成
Auth2FA::HOTP
方法使用提供的密钥和计数器值生成一个 基于HMAC的单次密码。 hotp.example.php
$code = imseyed\Auth2FA::HOTP($secret, $counter); /* $code is string like: 111222 */
密钥生成
Auth2FA::generateSecret
方法生成指定长度的 随机密钥。
$length = 16; // Secret key lenght $secret = \imseyed\Auth2FA::generate_secret($length); /* $secret is string like: OVZ7JFIPIXE4RTCE */
注意:没有单独的函数来检查2fa代码的正确性。您必须使用生成函数来确认用户发送的代码的正确性。
许可
此库在MIT许可证下发布。