🔐 双因素验证码工具

获取双重验证码 / 两步验证获取工具(相当于 Google Authenticator 的网页版)

🔒 完全本地运行 · 保护隐私
--

验证码剩余时间:--

什么是双因素认证(2FA)?

双因素认证(Two-Factor Authentication,简称 2FA),也叫两步验证,是在"账号 + 密码"之外增加的第二道安全防线。密码是"你知道的东西",而第二个因素通常是"你拥有的东西"——比如手机上的验证器应用生成的动态验证码。即使密码被泄露、被撞库或被钓鱼,攻击者没有你的验证设备,依然无法登录你的账号。

目前最主流的 2FA 方式是 TOTP(Time-based One-Time Password,基于时间的一次性密码)。开启两步验证时,网站会给你一串密钥(通常以二维码或 16~32 位字母数字的形式出现),验证器保存这串密钥后,每 30 秒生成一个新的 6 位验证码。Google Authenticator、Microsoft Authenticator、1Password 以及本工具,用的都是同一个开放标准(RFC 6238),因此可以互相替代。

根据微软和谷歌公开的安全研究,开启两步验证可以阻止超过 99% 的自动化账号攻击。如果你只打算为账号安全做一件事,那就是给重要账号开启 2FA。

TOTP 验证码是如何生成的?

TOTP 的原理并不神秘,它只依赖两个输入:你的密钥当前时间。算法将当前的 Unix 时间戳除以 30 得到一个"时间窗口"计数,再用密钥对这个计数做 HMAC-SHA1 运算,从结果中截取出 6 位数字——这就是你看到的验证码。

这套设计有几个巧妙之处:

  • 无需联网通信:网站服务器和你的验证器各自独立计算,只要双方时间一致、密钥相同,算出的验证码就一致。这也是为什么本工具可以完全在浏览器本地运行。
  • 验证码 30 秒失效:时间窗口每 30 秒推进一次,旧验证码立刻作废,即使被人偷看到一个验证码,也几乎来不及利用。
  • 不可逆推:HMAC 是单向运算,攻击者无法从若干个验证码反推出你的密钥。

正因为验证码由时间参与计算,设备时间不准是验证码错误最常见的原因——差 30 秒就会算出完全不同的结果。遇到"验证码总是不对",先检查设备时间是否开启了自动同步。

如何使用本工具

  1. 获取密钥:在目标网站(如 Google、GitHub)的安全设置中开启两步验证,选择"验证器应用"方式。网站会展示一个二维码,二维码下方通常有"无法扫码?"或"手动输入"选项,点开即可看到形如 67A36O5ATRYFEVUG 的密钥串。
  2. 输入密钥:把密钥粘贴到上方输入框,点击"点击获取验证码"。工具会立即在你的浏览器本地算出当前 6 位验证码,并显示剩余有效时间。
  3. 回填验证:把 6 位验证码填回网站完成绑定。之后每次登录需要验证码时,回到本页输入同一串密钥即可。
  4. (可选)生成二维码:点击"生成二维码"可以把密钥转成标准的 otpauth:// 二维码,用手机上的 Google Authenticator 等应用扫描,即可把同一个账号同时添加到手机——相当于给自己留一个备份。

提示:请务必自行妥善保存密钥串或网站提供的恢复代码。本工具不存储、不上传你的密钥,关闭页面后不会留下任何数据。

使用网页版验证器的安全建议

  • 适合的场景:手机不在身边、手机损坏或丢失后临时登录、在电脑上频繁登录需要 2FA 的网站、开发和测试 TOTP 集成。
  • 密钥即账号:任何拿到密钥串的人都能生成你的验证码。不要把密钥发到聊天工具、贴到公共笔记或截图分享。
  • 推荐离线保存:把密钥和网站提供的一次性恢复代码抄写在纸上,或保存在加密的密码管理器中,与密码分开存放。
  • 公用电脑慎用:在网吧、公司公用电脑等不受你控制的设备上输入密钥前,请确认环境可信。本工具不存储密钥,但无法防御设备本身已被植入的键盘记录器。
  • 高价值账号建议多重备份:邮箱、云盘、交易所等核心账号,建议同时在手机验证器中保存一份密钥,避免单点故障。

常见问题(FAQ)

验证码的计算完全在你的浏览器本地完成,使用开源的 otpauth 库实现标准 TOTP 算法。你输入的密钥不会被上传、存储或记录,关闭页面后不留任何数据。本项目代码开源,欢迎审查。

99% 的情况是设备时间不准。TOTP 依赖时间计算,误差超过 30 秒就会得到错误的验证码。请在系统设置中开启"自动设置时间",然后刷新页面重试。其次请检查密钥是否抄错——密钥只包含大写字母 A-Z 和数字 2-7,不含 0、1、8、9。

密钥是网站在你开启两步验证时生成的一串 Base32 编码字符(如 67A36O5ATRYFEVUG)。在网站安全设置中选择"验证器应用"方式后,二维码旁边一般都有"手动输入密钥"或"无法扫码"的入口,点开即可复制。它和二维码包含的是同一信息。

不能。密钥无法从验证码反推,本工具也不保存任何数据。如果密钥丢失,请使用开启 2FA 时网站发给你的一次性恢复代码(Recovery Codes)登录,然后重新绑定;没有恢复代码则需要走网站的账号申诉流程。详见我们的丢失 2FA 设备恢复指南

算法完全相同(RFC 6238 标准 TOTP),同一个密钥在两边生成的验证码一致。区别在于:手机应用会长期保存密钥、随时可用;本工具即用即走、不保存任何东西,适合手机不在身边的临时场景。两者可以并存互为备份。

30 秒是 TOTP 标准的默认时间窗口,是安全性和可用性的平衡:窗口太长,验证码被偷看后有更多时间被滥用;太短,你还没来得及输入它就过期了。页面上的倒计时显示的就是当前验证码的剩余有效时间。

所有采用标准 TOTP 协议的服务都支持,包括 Google、GitHub、Microsoft、Apple、Facebook、X(Twitter)、Discord、Dropbox、AWS、Cloudflare、币安等绝大多数主流平台。只要网站提供"验证器应用(Authenticator App)"选项,就可以使用本工具。

本工具一次处理一个密钥,切换账号时输入对应的密钥即可。这是刻意的设计——不在浏览器中长期保存多个密钥,降低泄露风险。如果你需要长期管理大量账号,建议使用手机验证器或密码管理器,把本工具作为应急备用。

它把你输入的密钥重新编码成标准的 otpauth:// 二维码。当你只有密钥串、而想把账号添加到手机验证器时,直接用手机扫这个二维码就行,不用手动输入一长串字符。二维码同样在本地生成,不经过服务器。

取决于具体网站。多数大型平台提供账号申诉通道,通过验证注册邮箱、绑定手机号、历史登录设备等信息恢复访问,但流程可能需要几天。这正是我们反复建议"开启 2FA 时立即离线保存恢复代码"的原因。具体各平台的恢复入口见恢复指南

TOTP 密钥使用 Base32 编码,字符集就是 A-Z 加 2-7,共 32 个字符。刻意排除了 0、1、8、9,以避免与字母 O、I、B、G 混淆,方便人工抄写。如果你的"密钥"里出现了这几个数字或小写字母,多半是抄错了或复制到了别的内容。

短信可以被 SIM 卡劫持(SIM Swapping)、伪基站和运营商社工攻击截获,美国 NIST 早在 2016 年就不再推荐短信作为验证因素。TOTP 验证码在设备本地生成、不经过任何通信网络,安全性明显更高。详细对比见TOTP 与短信验证码对比