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

objectbase32 加密/解密器

返回值

混合

checkCode

检查给定的密码 $code 是否是使用密钥 $secret 生成的有效 TOTP

checkCode( secret,  code) : 

参数

secret

stringBase32 编码的密钥

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

stringBase32 编码的密钥

time

intUNIX 时间戳

返回值

字符串

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