TOTP 验证码生成器

在浏览器中把 base32 密钥转换为实时的 TOTP 双重验证码,可选择验证码位数和时间周期。

正在加载工具…

TOTP 验证码生成器粘贴一个 base32 密钥,即可看到对应的 TOTP 双重身份验证码每秒刷新,效果与 Google Authenticator 或 Authy 完全一致。可选择 6 位或 8 位以及 30 秒(或自定义)周期,需要时还能生成一个全新的随机密钥。所有计算都通过 Web Crypto API 的 HMAC-SHA1 在本地完成,你的密钥绝不离开浏览器。

TOTP 验证码生成器 是什么?

TOTP 验证码生成器是一款免费在线工具,可将 base32 共享密钥转换为与 Google Authenticator、Authy、Microsoft Authenticator 等验证器应用相同的基于时间的一次性密码(TOTP)。开发者和 QA 工程师用它来测试双重验证流程、在手头有 otpauth:// URI 中的密钥时恢复访问,或在不扫描二维码的情况下验证 2FA 配置是否正常。它在 RFC 4226 HOTP 之上实现了 RFC 6238,对时间计数器计算 HMAC-SHA1 并进行动态截断,得到每个周期滚动一次的 6 位或 8 位验证码。验证码和剩余秒数倒计时每秒实时刷新,一键按钮即可为新测试账户生成一个全新的、符合密码学要求的随机 base32 密钥。

如何使用 TOTP 验证码生成器

  1. 将你的 base32 密钥粘贴到「密钥」字段,或点击「生成密钥」获得一个全新的随机密钥。空格和连字符会被忽略。
  2. 选择 6 位或 8 位,以匹配你的服务所要求的位数。
  3. 设置以秒为单位的「周期」(30 是几乎所有验证器应用使用的标准值)。
  4. 从「验证码」字段读取当前验证码;它会自动更新,倒计时显示它还能有效多久。
  5. 在倒计时归零前用复制按钮复制验证码,或等待下一个验证码滚入。

示例

标准的 6 位、30 秒验证码(常见情况)

粘贴形如 JBSWY3DPEHPK3PXP 的密钥,位数保持 6、周期保持 30。「验证码」字段会显示一个每 30 秒变化一次的六位数字,与 Google Authenticator 在同一时刻对相同密钥显示的完全一致。

适用于更严格场景的 8 位验证码

对于要求更长一次性密码的服务,将位数切换为 8。相同密钥此时会生成一个八位验证码,仍按所选周期滚动。

为测试账户生成全新密钥

点击「生成密钥」创建一个新的随机 20 字节 base32 密钥,然后把同一密钥输入到你正在配置的应用或服务中,使双方生成一致的验证码。

常见问题

我的密钥会被上传到任何地方吗?
不会。base32 密钥始终保留在你的浏览器中。验证码通过 Web Crypto API(HMAC-SHA1)在本地计算,没有任何内容会被发送到或存储在任何服务器上,因此该工具可离线使用,你的密钥绝不会离开页面。
为什么我的验证码和验证器应用对不上?
TOTP 取决于当前时间以及确切的密钥、位数和周期。请检查位数(6 或 8)和周期(通常为 30 秒)是否与你的服务一致,是否粘贴了完整的密钥,以及设备时钟是否准确——较大的时钟偏差会使验证码错位。
密钥需要是什么格式?
一个使用字母 A-Z 和数字 2-7 的 base32 字符串,与 otpauth:// 配置 URI 或二维码下方显示的编码相同。空格、连字符、小写字母和末尾的 = 填充都可接受;其他任何字符都会被标记为无效。
这使用哪种算法和标准?
它使用 HMAC-SHA1 在 RFC 4226 HOTP 之上实现了 RFC 6238 TOTP,这是几乎所有验证器应用使用的默认设置。目前不提供 SHA-256 或 SHA-512 变体。
我能在这里生成密钥而不是粘贴一个吗?
可以。「生成密钥」会使用 crypto.getRandomValues 创建一个符合密码学要求的随机 20 字节密钥并编码为 base32,可直接注册到你要保护的应用中。

相关工具