TOTP 与 HOTP 的区别:为什么有的码会跳、有的不变
一句话区别
- TOTP(时间型):验证码随时间自动跳,默认每 30 秒换一个——你在绝大多数网站上见到的就是它;
- HOTP(计数型):验证码只在你使用时才换,每用一次计数器加一,码保持不变直到下次生成。
两者都是 RFC 标准算法(分别是 RFC 6238 和 RFC 4226),应用对两种类型都支持。绝大多数服务用 TOTP;HOTP 常见于部分硬件令牌、老系统或特定企业场景。
TOTP 使用注意
- 时间同步是命门:TOTP 以手机当前时间为输入。如果手机时间不准,算出来的码永远是错的。系统设置里开启「自动确定日期和时间」即可避免绝大多数「验证码永远不对」的问题;
- 跨过 30 秒时留神:在最后几秒生成验证码,可能你还没输完它就刷新了。部分版本支持提前显示下一个码(3.3 版起的新功能),应急时有用;
- 临期提示:3.3 版起验证码临近过期会变色,3.4 版又加了临期触感反馈,都是帮你察觉「这个码快不能用了」。
HOTP 使用注意
- 顺序不能乱:HOTP 的码按计数器逐个生成,如果同一密钥在两台设备上各自生成过,计数器会错位,之后算的码就与服务端对不上。HOTP 密钥不建议多设备共用;
- 重新同步:一旦错位,需要让服务端重新同步计数器,或删掉条目重新绑定。
类型填错了怎么办
手动添加时类型选错(该 TOTP 选成 HOTP 或反之),出码必然不对。解决方式是编辑条目改类型,或删除重加,见高级编辑。至于 Steam、Yandex 等少数派算法,它们不属于这两种标准类型,另有专门页面:特殊验证码类型。