6 位动态码背后的两种类型:TOTP 与 HOTP
两种标准,同一个界面
验证器应用在添加账号时支持两类动态口令标准,添加界面通常以「基于时间 / 基于计数」出现:
| TOTP(基于时间) | HOTP(基于计数) | |
|---|---|---|
| 换码依据 | 当前时间 ÷ 30 秒 | 一个逐次递增的计数器 |
| 码的有效期 | 30 秒,过期作废 | 用过一次才作废,可以一直不变 |
| 网络依赖 | 无 | 无 |
| 使用占比 | 绝大多数平台 | 个别平台或硬件令牌 |
两者的共同点是离线算码:手机和服务器各持同一把密钥,各自按同一规则计算,结果必然一致——所以全程不需要网络参与。
为什么绝大多数平台都用基于时间
时间窗口的好处是「天然过期」:你来不及输、输错平台、或者截图外泄,30 秒后这枚码就毫无价值。基于计数的码没有时间概念,一枚码可以停在那里很久,泄露后的风险窗口大得多,因此只在少数特殊场景使用。
实操上的唯一考点
手动输入密钥时,应用会让你在两种类型里二选一——选错的话,生成的码永远对不上。判断依据很简单:绝大多数平台直接选「基于时间」;只有平台帮助文档明确写明使用计数式(常见于某些企业 VPN、硬件令牌场景)才选「基于计数」。选错了不用纠结,删掉这个账号重新添加一次即可,流程见手动输入设置密钥。
时间窗口的完整数学原理,见验证码是怎么算出来的。