pedrosancao / php-otp
根据RFC 4226和RFC 6238实现的基于HMAC的一次性密码算法,兼容Google Authenticator
v1.1.0
2020-11-23 00:41 UTC
Requires
- php: >=7.3
- pedrosancao/php-random-data: ^1.0
Requires (Dev)
- phpunit/phpunit: ^9.4
This package is auto-updated.
Last update: 2024-09-23 08:58:56 UTC
README
这个小型库实现了基于HMAC的一次性密码算法,主要用于两步验证:基于时间的TOTP(RFC 6238)和HOTP(RFC 4226)。
易于快速配置和使用类似Google Authenticator的移动应用。
要求
尽管它可能在PHP 5.4上也能工作,但我们强烈建议使用PHP >= 7.3,因为较低版本已经达到生命周期的结束。
安装
推荐使用composer
composer require pedrosancao/php-otp
用法
同步基于时间的单次密码与客户端
创建新令牌
$totp = PedroSancao\OTP\TOTP::create();
将URI呈现给用户作为QR码或显示32进制编码的秘密
// example using Google API, it's recommended to use a local library $uri = $totp->getUri('user@domain.com', 'Issuer Name'); $src = 'https://chart.googleapis.com/chart?chs=200x200&chld=M|0&cht=qr&chl=' . urlencode($uri); printf('<img src="%s"/>', $src); // OR echo $totp->getSecretReadable();
存储共享秘密
$secret = $totp->getRawSecret();
验证密码
$totp = PedroSancao\OTP\TOTP::createRaw($storedSecret); $totp->verify($inputPassword);
作为客户端使用
$totp = PedroSancao\OTP\TOTP::create($base32encodedSecret); // or $totp = PedroSancao\OTP\TOTP::createRaw($storedSecret); // or $totp = PedroSancao\OTP\TOTP::createFromURI($uriFromQrCode); echo $totp->getPassword();
更改哈希算法
SHA1是默认方法。如果您想在创建新实例后使用其他算法,请使用create*
方法之一调用useSha256
或useSha512
$totp = PedroSancao\OTP\TOTP::createRaw($storedSecret)->useSha256();
待办事项
- 实现所有URI参数
许可证
这个库是在MIT许可证下发布的。