TOTP 生成与时钟偏移测试
生成 SHA-1、SHA-256 或 SHA-512 的 6 位/8 位动态口令,并检查验证码刷新边界前后的结果。
在一个私密的浏览器工作台里,对比 App 与服务端输出、排查时钟漂移、验证 otpauth 参数并生成测试 Fixture。
!请只使用临时测试 Secret。保存的配置仅留在当前浏览器中,且不会额外加密。
还没有保存配置。
生成符合标准的 otpauth URI,用 Spot Auth 或其他验证器扫码,再把 App 显示的验证码放到这里对比。
生成固定的“时间 → TOTP”测试数据,用于单元测试和跨语言实现比对。
先确认两端 Secret、算法、位数和周期完全一致。
扫描生成的二维码,对比 App 当前显示的验证码。
若错误发生在刷新边界,使用时间偏移测试排查。
修改 OTP 实现前,先导出固定回归向量。
使用同一套配置覆盖 Base32 密钥解析、HMAC 算法、验证码位数、时间周期或计数器、otpauth 配置、校验窗口与可复现测试数据。所有计算仅在当前浏览器内完成。
生成 SHA-1、SHA-256 或 SHA-512 的 6 位/8 位动态口令,并检查验证码刷新边界前后的结果。
使用同一个 Base32 密钥生成基于计数器的 OTP,并逐步增加 Counter 检查双方是否同步。
创建标准配置 URI,用验证器 App 扫码,再将 App 显示的验证码与浏览器结果进行对拍。
在可配置窗口内验证 OTP,并导出固定的“Unix 时间 → TOTP”数据用于自动化回归测试。
两者都从共享密钥和 HMAC 派生短验证码。TOTP 使用时间步,HOTP 使用双方约定并持续递增的计数器。
| TOTP · RFC 6238 | HOTP · RFC 4226 | |
|---|---|---|
| 移动因子 | 按固定周期切分的 Unix 时间 | 单调递增的 Counter |
| 常见基准配置 | 30 秒 · 6 位 · HMAC-SHA-1 | 6 位 · HMAC-SHA-1 |
| 常见不匹配原因 | 时钟、周期、位数、算法或密钥不一致 | 计数器不同步、位数或密钥不一致 |
可以。密钥只是双方共享的密钥材料;TOTP 从时间获得移动因子,HOTP 使用计数器。二维码类型和服务端校验模式必须保持一致。
先核对解码后的密钥、算法、位数、周期和设备时间。HOTP 还需要核对 Counter;只在刷新边界失败通常与时钟偏移或校验窗口有关。
不建议。请只使用临时测试密钥。虽然计算不会上传,但保存的测试配置会以未额外加密的形式留在当前浏览器中。
不代表。还需要确认 issuer、账户标签、算法、位数、周期或计数器的解析方式,并将最终验证码与服务端实现进行对拍。