时间必须同步
TOTP 由 Secret 和时间周期共同决定。服务端与设备时钟偏差过大时,正确 Secret 也会失败;优先修复时钟,而不是无限扩大窗口。
SECURITY / RFC 6238
生成动态验证码、复现指定时刻、验证相邻时间窗口,并导入或导出 Google Authenticator 等认证器使用的 otpauth 配置。
AUTHENTICATOR CONFIG
10 字节 · 80 bit
只支持 otpauth://totp;标签与 issuer 参数冲突时会拒绝导入。
留空使用设备当前时间;填 Unix 秒可复现日志或 RFC 测试向量。
TOTP 由 Secret 和时间周期共同决定。服务端与设备时钟偏差过大时,正确 Secret 也会失败;优先修复时钟,而不是无限扩大窗口。
otpauth URI 和二维码都包含 Secret。它们适合初始化认证器,不应长期放在日志、分析事件、公开图片或支持工单中。
前后 1 个周期意味着最多检查 3 个候选值。正式登录还必须限制尝试次数、防重放并记录异常,而不是对更多窗口暴力匹配。
RELATED TOOLS
USE & REVIEW
先检查服务端和手机时间。TOTP 通常每 30 秒把当前 Unix 时间换成一个 Counter,再结合 Secret 计算验证码;设备相差一个周期就会得到不同结果。还要核对 Base32 Secret、算法、位数和周期,不能只看账号名称相同。
它会依次检查前一个、当前和后一个 Counter,共最多三个候选验证码,用来容忍很小的时钟偏差。窗口越大,单次猜中的概率也越高。生产登录应优先同步时钟,并配合尝试次数限制、防重放和异常记录,而不是无限扩大窗口。
不可以。URI 的 secret 参数就是 TOTP 共享密钥,二维码只是它的图形表示。任何拿到它的人都能在自己的认证器里生成同样的验证码。它们只应在初始化或安全恢复流程中短暂展示,不能写进日志、分析事件、公开截图或客服工单。
不会,验证码核心由 Secret、Counter、算法和位数决定。Issuer 与 Account 用来让认证器显示“哪个服务、哪个账号”。不过 URI 标签中的 Issuer 和 issuer 查询参数应保持一致,否则不同认证器可能显示混乱;本页遇到冲突会拒绝导入。
选择必须与服务端配置一致,算法不同就会生成不同验证码。SHA1 是 TOTP 生态中兼容性最好的常见默认值;SHA256 和 SHA512 需要确认目标认证器与服务端都支持。不要因为名称看起来更强就单方面切换,否则现有账号会全部验证失败。
不能。它适合生成测试向量、检查 URI 和排查时钟偏差,不负责安全保存 Secret、绑定用户、恢复码、限速、验证码防重放、审计或账号恢复。所有计算都在浏览器本地完成,但真实生产 Secret 仍不应粘贴进普通网页。