编码与安全指南

TOTP 验证码:密钥、周期与时钟偏差排查

复现公开 TOTP 向量,核对算法设置和时钟,定位验证码不一致。

Nav Tools ·

时间决定计数器

TOTP 按 Unix 时间和步长计算动态计数器,再结合密钥和算法参数产生验证码。

时区显示差异不改变 Unix 时间,应校准设备时钟,而非通过切换显示时区碰巧对齐。

所有参数必须匹配

需核对哈希算法、位数、周期和密钥编码,常见的六位 SHA-1 配置不是所有部署的规则。

Base32 表示密钥字节,并非额外密码;空格和复制出的配置包装需要按实现规则处理。

使用公开测试向量

RFC 6238 提供公开互操作向量;下述 SHA-1 密钥、八位、30 秒周期和时间 59 对应 94287082。

这是公开测试数据,不是真实账号密钥;本站使用 SHA-1,支持 6–8 位、30–60 秒周期;当前时间界面不提供历史测试时间戳。

Secret bytes (ASCII): 12345678901234567890
Algorithm: SHA-1  Digits: 8  Period: 30
Unix seconds: 59  Expected: 94287082

服务端还需验证策略

服务端可为时钟偏差容许窄范围相邻窗口,但过宽窗口会增加可接受验证码,不能代替时钟同步。

按业务要求拒绝复用、限制验证尝试并保护密钥;本站本地计算验证码,不负责账号安全策略。

参考资料

← 编码与安全指南