2FA.mo.cn 认证工具在浏览器内运行

技术原理

TOTP 与 HOTP 有什么区别?时间、计数器与共享密钥

看懂 TOTP 的时间窗口和 HOTP 的计数器,避免把所有动态验证码都当成同一种算法。

TOTP 使用时间步数作为变化输入,HOTP 使用递增计数器。两者都基于共享密钥与 HMAC,但双方保持同步的方式不同。

TOTP:时间驱动

按照 RFC 6238,时间步数可写成 T = floor((当前 Unix 时间 - T0) / X)。X 是周期,常见值为 30 秒。跨过时间窗口后,输入发生变化,验证码通常也会变化。

更换手机显示时区通常不会改变 Unix 时间,因此真正需要检查的是系统时钟是否准确,而不是仅调整时区。验证端如何接受相邻时间窗口,由具体服务决定。

HOTP:计数器驱动

HOTP 的变化输入是计数器,每次使用或生成后的递增规则需要与服务端约定。错误生成或反复消耗计数可能造成不同步,需要平台提供的重同步机制。

本网站生成工具目前只支持 TOTP,不提供 HOTP 计数器状态管理。

为什么有时出现相同验证码?

同一个时间窗口内,相同密钥与参数会输出相同 TOTP。即使输入不同,有限位数的输出也可能碰巧相同;不能通过观察几组验证码判断两个密钥相等。

参数必须逐项匹配

密钥、哈希算法、位数、时间周期都需要匹配。不要从“都是六位数字”推断任何平台都兼容。Steam Guard 等机制有自己的格式与约束。

参考资料

选择验证器与了解个人服务 →
# 打开验证器