williameggers / php-totp
PHP的TOTP/HOTP库
1.0.0
2021-10-27 10:02 UTC
Requires
- php: ^7.3 || ^7.4 || ^8.0
This package is auto-updated.
Last update: 2024-09-27 17:00:41 UTC
README
这是一个简单的PHP库和脚本,可以生成HOTP和TOTP令牌。该库完全符合RFC 4226和RFC 6238规范。支持所有哈希算法,包括令牌长度和TOTP的开始时间。
安装
将以下内容添加到您的composer.json文件中
{
"require": {
"williameggers/php-totp": "^1.0"
}
}
然后运行 composer install
。
使用方法
<?php use williameggers\phptotp\{Base32,Totp}; # Generate a new secret key # Note: generateSecret returns a string of random bytes. It must be base32 encoded before displaying to the user. You should store the unencoded string for later use. $secret = Totp::generateSecret(16); # Display new key to user so they can enter it in Google Authenticator or Authy echo Base32::encode($secret); # Generate the current TOTP key # Note: generateToken takes a base32 decoded string of bytes. $key = (new Totp())->generateToken($secret) # Check if user submitted correct key if ($user_submitted_key !== $key) { exit(); }
文档
williameggers\phptotp\Totp 扩展 Hotp
__construct(string $algo = 'sha1', int $startTime = 0, int $timeInterval = 30): Totp
$algo
: 生成令牌时使用的算法$startTime
: 时间的开始$timeInterval
: 令牌之间的时间间隔
generateToken(string $key, ?int $time = null, int $length = 6): string
$key
: 作为字节,base32解码的密钥$time
: 用于令牌的时间,默认为当前时间$length
: 令牌长度
williameggers\phptotp\Hotp
__construct(string $algo = 'sha1'): Hotp
$algo
: 生成令牌时使用的算法
generateToken(string $key, ?int $count = 0, int $length = 6): string
$key
: 作为字节,base32解码的密钥$count
: HOTP计数器$length
: 令牌长度
generateSecret(int $length = 16): string
$length
: 字节字符串的长度返回值
:此方法返回一个随机字节字符串,当显示给用户时,请使用 Base32::encode。
williameggers\phptotp\Base32
static encode(string $data): string
$data
: 要base32编码的数据
static decode(string $data): string
$data
: 要base32解码的数据
generate.php
generate.php 是一个脚本,其行为与Google Authenticator完全相同。它接受一个密钥,可以是参数,也可以在标准输入提示时输入,并假设使用SHA1、Unix时间戳作为开始和30秒的时间间隔来生成令牌。密钥应该是base32编码的。
$ ./generate.php Enter secret key: turtles Token: 338914 $
许可证
本软件根据MIT许可证发布,许可证文件可在LICENSE中找到。