浏览器本地计算

2FA 批量验证码生成器.

一行一个密钥,一次生成多组 TOTP 验证码。

省去来回切换,让每个账号的验证都清晰、有序。

开始生成密钥不离开当前页面
无需注册多行批量处理不持久化保存密钥
01

输入 2FA 密钥

等待生成

生成后可直接复制,验证码会按各自周期自动刷新。

等待输入 设备时间 --:--:--

多行输入,一次完成

最多 100 行密钥,支持账号备注。错误逐行提示,不影响其他有效密钥。

各自倒计时,自动更新

独立读取每组参数,到期自动更新,复制按钮始终对应当前账号。

不保存,少一份牵挂

无需注册,不加载第三方脚本。页面加载后,计算不依赖网络连接。

使用指南

三步,获取当前验证码

只需已有密钥,不需要输入账号密码。

01

准备并粘贴密钥

从你自己的账号安全设置中获取 2FA Secret,或使用已保存的 otpauth 链接。每行放一个账号,备注和密钥用竖线分隔。

02

点击批量生成

工具先检查每一行的格式,再在浏览器中计算验证码。纯密钥自动使用标准参数:SHA-1、6 位数字、30 秒周期,无需任何设置;otpauth 链接则按链接自带的参数计算。

03

复制并完成验证

点击账号旁的复制按钮,把验证码填入对应平台。倒计时接近结束时可等下一轮;使用完毕后点击“清空”,并妥善处理剪贴板内容。

三种格式,可以混合输入

Base32 密钥支持大小写和分组空格。备注只用于区分账号,不参与验证码计算;备注----密钥也可识别。

下面均为公开演示数据。不要把示例密钥用于真实账号,也不要输入账号密码、短信验证码或恢复代码。

01 / 纯密钥JBSWY3DPEHPK3PXP
02 / 账号备注 + 密钥工作账号 | JBSWY3DPEHPK3PXP
03 / OTPAUTH 链接otpauth://totp/Demo?secret=JBSWY3DPEHPK3PXP&digits=6&period=30
2FA / TOTP

认识 2FA 与 TOTP

2FA 是双因素认证。在典型的登录流程中,密码代表“你知道的信息”,验证器或安全密钥则提供另一种认证因素。它不是简单地多输一次密码,而是在账号验证时增加一道不同类型的检查。

本工具处理的是 TOTP:基于时间的一次性密码。它将共享密钥与当前时间结合,使用 HMAC 算法计算一组短数字。只要密钥、算法、位数、周期和时间一致,不同的兼容验证器就应得到相同结果。

算法依据 RFC 6238,链接格式参考 Key URI 说明。本工具不代表这些规范的制定方或任何第三方平台。

为什么验证码会不断变化?

TOTP 将时间划分成连续窗口,默认每 30 秒进入新窗口。相同参数在同一窗口内得到相同结果,跨过边界后重新计算。倒计时依据设备实际时间,不是从点击按钮时开始;相邻窗口也可能偶然得到相同数字。

共享密钥

••••••

当前时间

30s

动态验证码

123 456

图中数字仅作示意。工具不会找回遗失密钥,不会开启账号的双因素认证,也不能绕过登录验证。

密钥比验证码,
更需要保护。

拥有 Secret,就能在相应参数下持续计算验证码。因此,密钥不应进入聊天记录、截图、分享链接或公开仓库;重要账号请优先使用可信的验证器和受保护的设备。

计算不需要上传

此版本没有密钥上传接口,不加载第三方脚本、字体、广告或统计代码。PHP 只提供页面和静态资源,密钥计算不发送请求;内容安全策略进一步限制联网。

只在当前页面临时使用

不写入浏览器持久存储。刷新、离开、切换语言或主动清空后需要重新输入。复制的验证码仍可能留在系统剪贴板。

本地计算,不等于零风险

恶意扩展、被篡改的网站和受感染的设备仍可能读取输入。HTTPS 与本地计算不能代替对运行环境的信任;JavaScript 也无法保证安全擦除内存。

常见问题

关于密钥、验证码与使用安全, 这些问题值得提前了解。

返回生成器 →
2FA Secret 和 6 位验证码有什么区别?

Secret 是用于生成验证码的长期共享密钥,通常是一串 Base32 字符;验证码是计算出来的短时结果。把验证码输入登录页,把 Secret 保存在可信验证器中,不要把两者混淆。恢复代码也不是 TOTP Secret,不能用本工具转换。

可以一次输入多个账号吗?

可以。每行一个密钥,最多 100 行;纯密钥、“备注 | 密钥”和 otpauth://totp 链接可以混用。空行会被忽略,错误会按原始行号提示。单次生成会替换上次结果,部分格式错误不会阻止其他有效行生成。

为什么生成的验证码无法通过验证?

先确认密钥确实属于当前账号,再检查设备日期和时间是否准确,并核对算法、位数与周期。接近倒计时结束时,可以等下一轮再输入。账号重新绑定验证器后旧密钥可能失效;最终接受哪些时间窗口由目标平台决定,本工具无法保证平台接受每次提交。

我的密钥会上传或保存吗?

此版本不会把输入的密钥发送给 PHP,不写入数据库或地址栏。加载页面、样式和脚本仍会产生普通访问请求,运营方可能有常规访问日志,但输入的密钥不参与这些请求。浏览器扩展和被修改后的部署版本不在此保证范围内。

断网后还能使用吗?关闭网页会怎样?

页面和资源完整加载后,计算无需继续联网,但设备时钟必须准确。刷新、离开、切换语言或点击清空都会丢弃当前会话,需要重新输入。本工具不是密钥备份服务,也不是可安装的离线应用。

支持 SHA-256、8 位数字或其他更新周期吗?

本工具的算法能力覆盖 SHA-1、SHA-256、SHA-512,6 位或 8 位数字,以及 1–86400 秒的整数周期。纯密钥固定按标准参数 SHA-1、6 位和 30 秒计算,页面上没有参数选择项;需要其他参数时,请使用该账号的 otpauth://totp 链接,链接会带上自己的 algorithm、digits 和 period,未指定时仍采用标准默认值。设置必须与目标账号一致,不能随意调整来提高安全性。

支持二维码、HOTP、短信或验证器迁移文件吗?

此版本只支持文本 Base32 密钥和 otpauth://totp 链接,未加入二维码图片识别、基于计数器的 HOTP、Google Authenticator 批量迁移协议,也不接收短信或推送验证码。不能把这些类型的数据直接当作 TOTP 密钥使用。

浏览器提示无法计算或复制,该怎么处理?

线上页面应使用 HTTPS,本地开发可通过 localhost 访问。工具依赖 Web Crypto API,旧浏览器或受限的预览环境可能不支持。剪贴板权限被拒绝时,页面会展示仅含验证码的手动复制窗口,不会把 Secret 放入该窗口。

手动复制验证码

浏览器未允许自动复制。请选中下方内容复制,仅包含账号备注和验证码,不包含密钥。

这里是打开弹窗时的快照,验证码可能很快过期。过期后请关闭窗口重新复制。