TOTP 验证码生成器
在浏览器中把 base32 密钥转换为实时的 TOTP 双重验证码,支持可扫描二维码、otpauth:// 导入和验证码校验。
TOTP 验证码生成器 — 粘贴一个 base32 密钥——或整条 otpauth:// 配置 URI——即可看到对应的 TOTP 双重验证码每秒刷新,效果与 Google Authenticator 或 Authy 完全一致。可选择 SHA-1、SHA-256 或 SHA-512,6 位或 8 位以及自定义周期,添加发行方和账户标签,把生成的二维码扫描到你的应用中,并按一步窗口校验输入的验证码。所有计算都通过 Web Crypto API 在本地完成,你的密钥绝不离开浏览器。
TOTP 验证码生成器 是什么?
TOTP 验证码生成器是一款免费在线工具,可将 base32 共享密钥转换为与 Google Authenticator、Authy、Microsoft Authenticator 等应用相同的基于时间的一次性密码(TOTP),并能双向处理完整的 otpauth:// 配置 URI。开发者和 QA 工程师用它测试双重验证流程、通过扫描二维码注册测试账户,或确认输入的验证码是否有效。它在 RFC 4226 HOTP 之上实现了 RFC 6238,使用你选择的 SHA-1、SHA-256 或 SHA-512 哈希计算 HMAC,并进行动态截断得到每个周期滚动一次的 6 位或 8 位验证码。粘贴 otpauth:// URI 即可自动填入密钥、发行方、账户、算法、位数和周期;实时验证码、倒计时、可扫描二维码以及±1 步验证码校验都会自动更新。
如何使用 TOTP 验证码生成器
- 将 base32 密钥粘贴到「密钥」字段,点击「生成密钥」获得全新随机密钥,或粘贴 otpauth:// URI 并点击「从 URI 填充」自动填入所有字段。
- 打开设置选择哈希算法(SHA-1、SHA-256 或 SHA-512)、6 位或 8 位以及以秒为单位的周期——验证码将严格按这些选择重新计算。
- 添加发行方和账户标签,使生成的 otpauth:// URI 和二维码能标识该账户。
- 从「验证码」字段读取当前验证码并复制,或把二维码扫描到你的验证器应用以注册该账户。
- 在「校验验证码」中输入一个验证码,与当前验证码及其前后一步进行比对。
示例
通过二维码添加测试账户
输入一个密钥,设置形如 Example Corp 的发行方和形如 alice@example.com 的账户,然后用 Google Authenticator 或 Authy 扫描生成的二维码。由于二维码编码了相同的密钥、算法、位数和周期,双方随后会生成一致的验证码。
导入现有的 otpauth:// URI
粘贴形如 otpauth://totp/Example:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Example&algorithm=SHA256&digits=8&period=30 的字符串并点击「从 URI 填充」;密钥、发行方、账户、SHA-256 算法、8 位和 30 秒周期会自动填入,实时验证码随即出现。
用步长窗口校验验证码
把你的应用正在显示的验证码粘贴到「校验验证码」。无论它匹配当前的 30 秒步长还是紧邻的前一步或后一步,都会被标记为有效,从而涵盖设备之间的小幅时钟偏差。
常见问题
- 我的密钥会被上传到任何地方吗?
- 不会。base32 密钥、otpauth:// URI 和二维码都保留在你的浏览器中。验证码通过 Web Crypto API 在本地计算,二维码也在本机绘制,因此没有任何内容会发送到或存储在服务器上,该工具可离线使用。
- 支持哪些算法?
- SHA-1、SHA-256 和 SHA-512。所选算法用于实际的 HMAC 计算,因此验证码可匹配配置为其中任意一种的服务。SHA-1 是几乎所有验证器应用使用的默认值。
- 我如何把账户添加到验证器应用?
- 填入密钥以及发行方和账户,然后用 Google Authenticator、Authy 或同类应用扫描生成的二维码(其编码了一个 otpauth://totp URI),或把二维码下载为 PNG。你也可以直接复制该 otpauth:// URI。
- 验证码校验会检查什么?
- 它会把你输入的验证码与当前周期的验证码以及前后各一步的验证码(±1 窗口)比较,因此刚过期或稍微提前的验证码仍会通过。这与大多数服务器为时钟偏差留出的小容差一致。
- 为什么我的验证码和验证器应用对不上?
- TOTP 取决于当前时间以及确切的密钥、算法、位数和周期。请检查算法(SHA-1/256/512)、位数(6 或 8)和周期(通常 30 秒)是否与你的服务一致,是否粘贴了完整密钥,以及设备时钟是否准确。