TOTP 生成器 — 实时 2FA 验证器代码
粘贴 Base32 TOTP 密码,然后观看真实的、实时的 6 位验证码每 30 秒轮换一次 — 在浏览器中完全离线。
结果
该工具根据 Base32 密钥生成真实的、符合标准的基于时间的一次性密码 (TOTP) 代码,与 Google Authenticator 或 Authy 等应用程序显示的六位旋转代码相同。粘贴您在设置双因素身份验证时获得的密码(通常隐藏在二维码后面的相同字符串),然后观看实时代码倒计时并每 30 秒刷新一次,就像在手机应用程序中一样。它用于测试和验证您拥有或控制的 2FA 机密:调试您正在构建的登录流程,在丢弃配置 QR 之前确认备份代码,或者仔细检查机密是否正确输入。
从本质上讲,这是基于 RFC 4226 (HOTP) 构建的 RFC 6238 (TOTP) 的真正实现,而不是装饰性的倒计时。 Base32 秘密按照 RFC 4648 解码为原始密钥字节,当前 Unix 时间除以时间步长以获得移动计数器,并且该计数器被编码为 8 字节大端缓冲区。浏览器的本机 Web Crypto API (crypto.subtle) 使用您选择的哈希值在该缓冲区上计算 HMAC - SHA-1 仍然是与现有身份验证器应用程序兼容的几乎通用的默认值,而 SHA-256 和 SHA-512 则提供用于支持更强变体的设置。然后,RFC 4226 的动态截断从 HMAC 输出中以最后一个字节的偏移量拉出四个字节,屏蔽最高位,并以 10^6 或 10^8 为模减少结果以生成 6 位或 8 位代码 - 与手机的身份验证器应用程序内部运行的算法完全相同。
该过程的每个部分都在本地进行:没有服务器组件,没有携带您的秘密的分析信标,也没有任何类型的外部 API 调用。您粘贴到字段中的 Base32 文本将由选项卡中运行的 JavaScript 直接解析,并且永远不会离开它。这使得这是一种在您信任的计算机上对 2FA 机密进行健全性检查的安全方法,尽管与任何涉及身份验证材料的工具一样,您仍然应该避免在共享或公共计算机上粘贴机密,并且应该仅在与您拥有的帐户或明确授权测试的帐户关联的代码上使用此方法。
算法、数字计数和时间步长控制的存在是因为现实世界的 TOTP 部署并不完全统一:大多数消费者服务使用 6 位数字和 30 秒步长的 SHA-1,但一些企业和开发人员工具发布 SHA-256 或 SHA-512 密钥、8 位代码或非标准时间步长(如 15 或 60 秒)。将这些设置与配置 URI 或设置页面指定的任何内容相匹配,可以让您准确地重现身份验证器应用程序将显示的代码,当您实现自己的 TOTP 验证服务器并需要可靠的离线参考来进行比较时,这是非常宝贵的。