⭐ 觉得好用?收藏备用,下次直接打开 ✨ 开通会员去广告 · 更多权益即将开放 ☕ 支持作者
🔒
密钥仅在本机浏览器内计算,不上传。已添加的账号与密钥保存在当前浏览器本地,下次打开自动恢复;清空输入框不会删除已保存的账号(删除请点账号右上角的 ×)。请勿用于生产/真实账户的 2FA 密钥测试;任何因在公共设备粘贴密钥导致的泄露,本工具不承担责任。
当前验证码
––– –––
– 秒后刷新 · 下一个 ––––––
生成配置二维码(导入验证器 App)

TOTP 验证码 在浏览器本地生成基于时间的一次性口令(TOTP,RFC 6238),也就是各类两步验证(2FA)App 里那串每 30 秒刷新的 6 位动态码。输入 Base32 密钥或直接粘贴 otpauth:// 链接,即可实时出码并显示倒计时;可调位数、周期、算法,还能反向生成配置二维码供验证器扫码导入。可保存多个账号并随时切换。全部计算在本机完成,密钥不上传;账号与密钥保存在当前浏览器本地。

它是怎么算出来的

  1. Base32 解码 密钥得到二进制 key
  2. 取 当前 Unix 时间 ÷ 周期(默认 30 秒)向下取整,作为计数器 counter
  3. 用 key 对 counter 做 HMAC-SHA1(或 SHA256/SHA512)
  4. 对结果做 动态截断(DT),取末几位十进制数即为验证码

因为双方用的是同一份密钥和同一个时间步,服务端无需联网通信也能验证你输入的码——这正是 TOTP 的精妙之处。

对不上码时的排查顺序

  1. 先看时间 — 设备时钟偏差是第一大原因,校准系统时间
  2. 再核参数 — 位数 / 周期 / 算法是否和服务端一致
  3. 后查密钥 — 是不是 Base32、有没有混入多余字符或错填成 Hex

⚠️ 安全提醒:动态码本身有效期很短,但密钥(seed)是长期凭证。不要在公共设备粘贴真实账户密钥,也不要把它截图、明文存档。本工具用于学习与调试,不替代正规验证器。

📍使用场景

  • 临时拿一个 2FA 验证码手机不在身边,但有备份的 Base32 密钥,粘进来就能算出当前 6 位动态码登录,倒计时还告诉你这个码还能用几秒。
  • 开发/测试两步验证功能后端实现 TOTP 登录时,用它对照验证:同一个密钥、同样的算法和周期,看自己服务端算出的码和这里是否一致,快速定位时间步、位数、Base32 解码的 bug。
  • 给应用生成配置二维码填好密钥、账户、发行方,一键生成 otpauth 二维码,用 Google Authenticator / 1Password / 微软 Authenticator 扫码导入,验证你的发码参数是否正确。

❓常见问题

我的密钥安全吗?会上传吗?

不上传。Base32 解码、HMAC 计算、出码全部在浏览器本地通过 JavaScript HMAC 完成,密钥不会随计算上传。你添加的账号与密钥会保存在当前浏览器的 localStorage 中,下次打开自动恢复;清空输入框不会删除已保存的账号,删除请点账号卡片上的 ×。但请注意:⚠️ 不要在公共/不可信设备上粘贴真实账户的 2FA 密钥,密钥一旦泄露等同于绕过你的两步验证。本工具仅适合学习、调试和临时取码。

能同时保存多个账号吗?

可以。输入合法密钥后会自动存成一个账号,点账号条右侧的「+」继续加下一个,最多 50 个;点一下卡片即可切换,当前账号高亮显示。每个账号可以填一条备注用来区分(比如「公司邮箱」「备用号」);卡片名优先取备注,其次发行方、账户名,都没填则显示密钥前几位。备注只存在本机,不会写进 otpauth 链接和二维码。「随机生成」和「粘贴」都会新建账号,不会覆盖当前这条已存的密钥;要删除某个账号,点卡片上的 × 并二次确认。

它和 Google Authenticator 算出来的码一样吗?

一样,前提是参数一致。默认 SHA1、6 位、30 秒周期正是 Google Authenticator 等主流验证器的标准配置(RFC 6238)。只要密钥相同、设备时间准确,本工具和它们生成的动态码完全相同、同步刷新。

为什么我算出来的码和服务端对不上?

最常见是三类原因:① 设备时间不准——TOTP 完全依赖系统时间,差超过一个时间步就对不上,请校准时钟;② 参数不符——对方可能用了 SHA256/SHA512、8 位或 60 秒周期,需在选项里改成一致;③ 密钥格式——密钥必须是 Base32(仅 A–Z、2–7),不要误填 Hex 或带了多余字符。

支持 8 位、SHA256、60 秒这些非默认参数吗?

支持。位数可选 6/7/8,周期可选 15/30/60 秒,算法可选 SHA1/SHA256/SHA512,覆盖绝大多数服务的配置。粘贴标准 otpauth:// 链接时,里面带的 digits、period、algorithm、issuer 也会被自动解析填入。

什么是 Base32 密钥?大小写、空格有影响吗?

TOTP 密钥按 RFC 4648 Base32 编码,字符集是 A–Z 和 2–7。大小写不敏感、空格和短横线会被自动忽略(很多服务把密钥按 4 位一组带空格展示,直接整段粘贴即可)。结尾的 = 填充也会被忽略。

这能代替我的验证器 App 吗?

不建议长期替代。它没有加密存储、没有锁屏保护,你添加的多个账号与密钥会以明文持续保存在当前浏览器本地,下次打开自动恢复。它的定位是开发调试、参数验证和应急取码;日常 2FA 请继续用 Authenticator App 或硬件密钥这类有安全存储的方案。