TOTP 动态口令生成器
输入 Base32 密钥,实时生成与校验两步验证码,支持迁移二维码。
两步验证的流程里藏着一个小尴尬:换手机、重装系统、或者在电脑前想登录只有手机上装着验证器的服务——验证码就在密钥里,而密钥是一串 Base32 字符串。本工具把这层窗户纸捅开:输入密钥,浏览器按 RFC 6238 实时算出当前口令,30 秒一换,倒计时可见。
实现完全遵循标准:HMAC-SHA-1/256/512 三种算法、6/8 位、30/60 秒步长均可配置,动态截断按 RFC 4226 执行(实现通过了 RFC 6238 附录 B 的全部官方测试向量)。还能生成 otpauth:// 迁移二维码——主流验证器 App 扫码即可导入,以及一个校验输入框:输入你手机上正在显示的码,确认密钥与配置无误。
TOTP 的完整机制
服务器与你的设备共享一个密钥 K,双方各自计算 HOTP(K, floor(当前秒数/30)):以 30 秒为窗,把窗号作为计数器做 HMAC,截断取模得到 6 位数。两端的钟只要相差不超过一个窗口,码就一致——这也是「手机时间不对验证码失败」的原因:本质是计数器对不上。
为什么这类工具敢声称安全
TOTP 的安全边界恰恰适合浏览器实现:计算是纯本地的(WebCrypto HMAC),密钥不出内存、不上传,断网也能算。风险敞口与手机上的验证器一致——密钥本身泄露。所以本页不提供密钥持久化:刷新即清空,不留副本。
常见问题
- 密钥从哪里拿?
- 开启两步验证时,服务网站除了展示二维码,通常还提供「无法扫码?」的文本密钥——那就是 Base32 密钥。本工具也支持粘贴 otpauth:// 链接中的 secret 参数。
- 校验功能的意义是什么?
- 迁移或重建验证器后,输入手机上正显示的码验证一次:通过说明密钥、算法、步长、位数全部与服务端一致——把「下次登录才发现配错了」提前到当场。
- 和 Google Authenticator 是什么关系?
- 同一套标准(RFC 6238)。Google Authenticator 是这个标准的一个 App 实现,本页是它的网页版等价物;otpauth:// 二维码互通。