Totp
此类提供了一个符合 RFC6238 的基于时间的一次性密码,与 Google Authenticator 兼容(PassCodeLength = 6 且 TimePeriod = 30)。
自 |
4.0.0 |
---|---|
包 |
Joomla CMS |
方法
__construct
初始化一个符合 RFC6238 的 TOTP 生成器。请注意,此类未实现 RFC6238 第 5.2 节最后一段中的约束。您需要确保同一用户/设备在同一时间段内不会重试验证。
__construct( timeStep = 30, passCodeLength = 6, secretLength = 10, base32 = null) :
参数
- timeStep
int
时间步长(以秒为单位)。使用 30 以与 Google Authenticator 兼容。- passCodeLength
int
生成的密码长度。默认:6 位数字。- secretLength
int
密钥长度。默认:10 字节(80 位)。- base32
object
base32 加密/解密器
返回值
混合
checkCode
检查给定的密码 $code 是否是使用密钥 $secret 生成的有效 TOTP
checkCode( secret, code) :
参数
- secret
string
Base32 编码的密钥- code
string
要检查的密码
返回值
bool
如果代码有效,则为 True
generateSecret
生成用于 TOTP 生成的(半)随机密钥
generateSecret() :
注意 |
自 3.9.25 版本起,我们使用安全方法“random_bytes”而不是原来的不安全方法“rand”。random_bytes 函数已通过核心附带的库 paragonie/random_compat 反向移植到过时的 PHP 版本中。 |
---|
返回值
字符串
getCode
获取给定密钥 $secret 和给定 UNIX 时间戳 $time 的 TOTP 密码
getCode( secret, time = null) :
参数
- secret
string
Base32 编码的密钥- time
int
UNIX 时间戳
返回值
字符串
getPeriod
根据 $time 时间戳和定义的时间步长获取时间段。如果跳过 $time 或将其设置为 null,则将使用当前时间戳。
getPeriod(int|null time = null) :
参数
- time
int|null
时间戳
返回值
int
自 UNIX 纪元以来的时间段
getUrl
返回一个 QR 码 URL,以便轻松设置 Google Authenticator 等 TOTP 应用
getUrl( user, hostname, secret) :
参数
- user
string
用户- hostname
string
主机名- secret
string
密钥字符串
返回值
字符串
hashToInt
提取哈希的一部分作为整数
hashToInt( bytes, start) :
参数
- bytes
string
哈希值- start
string
开始的字符(0 = 第一个字符)
返回值
字符串
属性
_passCodeLength
密码长度
类型
int
_pinModulo
Pin 模数
类型
int
_secretLength
密钥的字节长度。
RFC 4226:“共享密钥的长度必须至少为 128 位。本文档建议共享密钥长度为 160 位。”原始值为 10 字节(80 位),此值已在 Joomla! 3.9.25 中增加到 20(160 位)。
类型
int
_timeStep
时间步长
类型
int
_base32
Base32
类型
int