本地 2FA 实验室

为每一种 OTP 实现,提供可信的对拍基准。

在一个私密的浏览器工作台里,对比 App 与服务端输出、排查时钟漂移、验证 otpauth 参数并生成测试 Fixture。

本地计算 · Secret 不会上传
TOTP / SHA-1------
剩余 30 秒

!请只使用临时测试 Secret。保存的配置仅留在当前浏览器中,且不会额外加密。

01 / CONFIG

通用配置

已保存的测试配置

还没有保存配置。

02 / OTPAUTH

二维码导入 + App 对拍

生成符合标准的 otpauth URI,用 Spot Auth 或其他验证器扫码,再把 App 显示的验证码放到这里对比。

otpauth://
TOTP 实时------剩余 30 秒
03

TOTP 实时

------
04

HOTP 计数

------
05

验证码校验

06 / FIXTURES

批量回归向量

生成固定的“时间 → TOTP”测试数据,用于单元测试和跨语言实现比对。

07 / GUIDE

一套清晰的排错顺序

  1. 01

    先确认两端 Secret、算法、位数和周期完全一致。

  2. 02

    扫描生成的二维码,对比 App 当前显示的验证码。

  3. 03

    若错误发生在刷新边界,使用时间偏移测试排查。

  4. 04

    修改 OTP 实现前,先导出固定回归向量。

2FA 开发者参考

用本地基准值开发和排查 OTP 实现。

使用同一套配置覆盖 Base32 密钥解析、HMAC 算法、验证码位数、时间周期或计数器、otpauth 配置、校验窗口与可复现测试数据。所有计算仅在当前浏览器内完成。

这个 2FA 测试工具可以检查什么

01

TOTP 生成与时钟偏移测试

生成 SHA-1、SHA-256 或 SHA-512 的 6 位/8 位动态口令,并检查验证码刷新边界前后的结果。

02

HOTP 计数器基准

使用同一个 Base32 密钥生成基于计数器的 OTP,并逐步增加 Counter 检查双方是否同步。

03

otpauth 二维码生成器

创建标准配置 URI,用验证器 App 扫码,再将 App 显示的验证码与浏览器结果进行对拍。

04

验证码校验与测试向量

在可配置窗口内验证 OTP,并导出固定的“Unix 时间 → TOTP”数据用于自动化回归测试。

TOTP 与 HOTP 可以使用同一密钥,但移动因子不同

两者都从共享密钥和 HMAC 派生短验证码。TOTP 使用时间步,HOTP 使用双方约定并持续递增的计数器。

TOTP · RFC 6238HOTP · RFC 4226
移动因子按固定周期切分的 Unix 时间单调递增的 Counter
常见基准配置30 秒 · 6 位 · HMAC-SHA-16 位 · HMAC-SHA-1
常见不匹配原因时钟、周期、位数、算法或密钥不一致计数器不同步、位数或密钥不一致

2FA 开发常见问题

01同一个 Base32 密钥可以同时用于 TOTP 和 HOTP 吗?+

可以。密钥只是双方共享的密钥材料;TOTP 从时间获得移动因子,HOTP 使用计数器。二维码类型和服务端校验模式必须保持一致。

02为什么验证器 App 与服务端验证码不一致?+

先核对解码后的密钥、算法、位数、周期和设备时间。HOTP 还需要核对 Counter;只在刷新边界失败通常与时钟偏移或校验窗口有关。

03可以把生产环境的 2FA 密钥粘贴到这里吗?+

不建议。请只使用临时测试密钥。虽然计算不会上传,但保存的测试配置会以未额外加密的形式留在当前浏览器中。

04二维码能够被扫码就代表完全兼容吗?+

不代表。还需要确认 issuer、账户标签、算法、位数、周期或计数器的解析方式,并将最终验证码与服务端实现进行对拍。

Logos provided by Logo.dev

下载链接已预留,将在正式发布时启用。