安全入门
验证码为什么每隔几十秒就会变?
不用联网也能生成,下次打开又是新的数字。看看 TOTP 背后的密钥和时钟是怎么配合的。

先说结论
绑定时,网站和验证器保存了同一份设置密钥。之后双方用这份密钥和当前时间计算验证码,所以验证器可以在离线时生成数字,到了下一个时间段就会刷新。
绑定时,网站给了验证器一份密钥
添加账户时,二维码通常包含生成凭据所需的信息。眼前的短码只是计算结果,不是完整备份。只记住一串会变化的数字,不能在换机后重新建立这个账户。
二维码和手动设置密钥都应按敏感凭据处理。给别人看一张设置截图,可能比告诉他一个即将过期的验证码影响更久。
倒计时结束,为什么数字就变了?
TOTP 将时间划成连续区间,再为当前区间计算代码。RFC 6238 推荐的默认步长是 30 秒,但不能据此认定每个网站都使用相同参数。
倒计时接近结束时,先等下一轮再输入通常更容易判断结果。网站接受多大的时间偏差,由网站决定;反复提交过期号码不会帮助它重新同步。
没网络时,为什么仍能看到验证码?
生成 TOTP 只需要保存的密钥、对应参数和设备时间,所以手机暂时没有网络时,验证码仍会变化。等手机或电脑联网后,再到网站完成登录。
云同步是另外一个步骤,需要联网完成。准备在另一台设备取码时,先同步账号,再打开列表查看就好。
理解原理后,日常使用就看这三件事
在 Authenticator Cloud 中,为账号写清名称,留意验证码的倒计时。快到期时等下一轮,再复制或填入网站。
手动添加时按网站提供的类型、位数、算法和周期填写。遇到代码无效,先检查下面三项。
- 选中的服务和账号是否正确。
- 设备是否开启自动校时。
- 网站的绑定确认是否已经完成。
参考资料
详细设置步骤可参阅以上官方帮助。

