jazor/totp-for-php
Composer 安装命令:
composer require jazor/totp-for-php
包简介
totp/hotp implements for php
README 文档
README
RFC: TOTP: Time-Based One-Time Password Algorithm
Uri
$uri = new Uri('otpauth://totp/test_account:your-site.com?secret=Y5C4TFC5Q6OZHMXS7NOEDO5AYUP5XWMK&algorithm=sha1&digits=6&period=30'); $secret = $uri->getSecret(); echo 'key = ' . $secret . "\r\n"; // output: // key = Y5C4TFC5Q6OZHMXS7NOEDO5AYUP5XWMK $uri = new Uri(); $uri->setLabel('test'); $uri->setType('totp'); //default is 'totp' $uri->setSecret('Y5C4TFC5Q6OZHMXS7NOEDO5AYUP5XWMK'); echo 'totp uri = ' . $uri . "\r\n"; // output: // totp uri = otpauth://totp/test?secret=Y5C4TFC5Q6OZHMXS7NOEDO5AYUP5XWMK
快速调用
默认为30秒步长,6个数字的验证码,使用SHA1算法。
//生成 echo TOTP::generate('Y5C4TFC5Q6OZHMXS7NOEDO5AYUP5XWMK', time()); //校验 echo TOTP::verify('123456', 'Y5C4TFC5Q6OZHMXS7NOEDO5AYUP5XWMK', time());
更多测试
// Seed for HMAC-SHA1 - 20 bytes $seed = Base32::decode("GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ"); // Seed for HMAC-SHA256 - 32 bytes $seed32 = Base32::decode("GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQGEZA===="); // Seed for HMAC-SHA512 - 64 bytes $seed64 = Base32::decode("GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQGEZDGNA="); $T0 = 0; $X = 30; $testTime = [59, 1111111109, 1111111111, 1234567890, 2000000000, 20000000000]; ini_set('date.timezone', 'UTC'); for ($t = 0; $t < count($testTime); $t++) { echo sprintf( "time: %s, date: %s, code: %s, alg: SHA1\r\n", $testTime[$t], date('Y-m-d H:i:s', $testTime[$t]), TOTP::compute($seed, $testTime[$t], 'sha1', 8, $X, $T0)); echo sprintf( "time: %s, date: %s, code: %s, alg: SHA256\r\n", $testTime[$t], date('Y-m-d H:i:s', $testTime[$t]), TOTP::compute($seed32, $testTime[$t], 'sha256', 8, $X, $T0)); echo sprintf( "time: %s, date: %s, code: %s, alg: SHA512\r\n", $testTime[$t], date('Y-m-d H:i:s', $testTime[$t]), TOTP::compute($seed64, $testTime[$t], 'sha512', 8, $X, $T0)); } /* 输出结果: time: 59, date: 1970-01-01 00:00:59, code: 94287082, alg: SHA1 time: 59, date: 1970-01-01 00:00:59, code: 46119246, alg: SHA256 time: 59, date: 1970-01-01 00:00:59, code: 90693936, alg: SHA512 time: 1111111109, date: 2005-03-18 01:58:29, code: 07081804, alg: SHA1 time: 1111111109, date: 2005-03-18 01:58:29, code: 68084774, alg: SHA256 time: 1111111109, date: 2005-03-18 01:58:29, code: 25091201, alg: SHA512 time: 1111111111, date: 2005-03-18 01:58:31, code: 14050471, alg: SHA1 time: 1111111111, date: 2005-03-18 01:58:31, code: 67062674, alg: SHA256 time: 1111111111, date: 2005-03-18 01:58:31, code: 99943326, alg: SHA512 time: 1234567890, date: 2009-02-13 23:31:30, code: 89005924, alg: SHA1 time: 1234567890, date: 2009-02-13 23:31:30, code: 91819424, alg: SHA256 time: 1234567890, date: 2009-02-13 23:31:30, code: 93441116, alg: SHA512 time: 2000000000, date: 2033-05-18 03:33:20, code: 69279037, alg: SHA1 time: 2000000000, date: 2033-05-18 03:33:20, code: 90698825, alg: SHA256 time: 2000000000, date: 2033-05-18 03:33:20, code: 38618901, alg: SHA512 time: 20000000000, date: 2603-10-11 11:33:20, code: 65353130, alg: SHA1 time: 20000000000, date: 2603-10-11 11:33:20, code: 77737706, alg: SHA256 time: 20000000000, date: 2603-10-11 11:33:20, code: 47863826, alg: SHA512 */
jazor/totp-for-php 适用场景与选型建议
jazor/totp-for-php 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 11 次下载、GitHub Stars 达 1, 最近一次更新时间为 2023 年 08 月 08 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「base32」 「two-factor」 「hotp」 「totp」 「authenticator」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 jazor/totp-for-php 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 jazor/totp-for-php 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 jazor/totp-for-php 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Security tools for PHP
Sets of digits or characters that may be used for base conversions, encoding and decoding tasks, and input validation
Simple HOTP/TOTP generation library
Implementation of bitcoin cash base32 addresses
Filament Two Factor Authentication: Google 2FA + Passkey Authentication
A Google Authenticator Bundle for Symfony
统计信息
- 总下载量: 11
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 29
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-08-08