黑哥AI / mfa LOCAL ONLY

MFA 验证码
本地生成器

输入 MFA 密钥,直接在这个页面算出 6 位动态码,密钥一个字节都不会发到服务器。

零网络请求 不落库 不留日志 断网也能用

空格、短横线、大小写都会自动处理。粘贴认证器导出的 otpauth:// 链接时,位数、周期、算法会自动填好。

— — — — — —
等待输入密钥
高级参数(默认适用于绝大多数账号)

阿里云、腾讯云、AWS、GitHub、Google 全部用默认的 6 位 / 30 秒 / SHA1,不用改。

这个工具是什么

一句话结论:这是一个把 MFA 密钥留在你自己浏览器里的 TOTP 验证码生成器。你粘贴 Base32 密钥,页面用设备上的 Web Crypto 算出 6 位动态码,每 30 秒换一次。整个过程没有任何一次网络请求。

MFA 是多因素认证的简称,第二因素通常就是这串每半分钟一变的数字,标准名字叫 TOTP。阿里云、腾讯云、AWS、GitHub 开启两步验证后要填的就是它。

常见场景有三种:手机不在身边、认证器装在另一台设备上、临时要给同事一个一次性的码。网页版这时候能顶上,前提是它不碰你的密钥。

为什么敢让你放心输

  • 密钥不出浏览器。整个页面没有任何后端接口,验证码由你设备上的 Web Crypto 算出来,服务器只负责把这个静态页面发给你。
  • 密钥不保存。不写 Cookie,不写任何本地存储,关掉标签页就没了。
  • 零第三方依赖。没有 CDN、没有统计脚本、没有字体外链,页面本身就是全部代码,一共 40 KB。
  • 还上了一道浏览器强制锁。页面自带 CSP 规则 connect-src 'none',浏览器会直接禁掉所有发送通道。就算哪天这个页面被人塞进恶意代码,它也没有任何办法把你的密钥送出去。

不信可以自己验:按 F12 打开「网络」面板再输一次密钥,全程是零请求;或者断网开飞行模式,这个页面照样出码。

和服务端计算的在线工具差在哪

对比项服务端计算的工具本页
密钥去向明文提交到对方服务器留在浏览器,零请求
计算位置对方服务端你的设备,Web Crypto
关掉页面之后对方日志里可能还有什么都不剩
断网可用不可用可用
第三方依赖CDN、统计脚本等零
外发防护无CSP 浏览器强制

两边算出来的数字完全一样,TOTP 是公开算法。服务端计算多出来的只有风险,没有收益。

怎么用

  1. 从服务商页面或认证器里拿到 Base32 密钥,也可以直接拿整条 otpauth:// 链接。
  2. 粘进上面的输入框,验证码立刻出现,进度条显示这一码还剩多少秒。
  3. 点验证码或点复制按钮拿走。剩余不足 5 秒时数字转琥珀色,这时候等下一码更稳妥。

常见问题

这个页面会不会上传我的 MFA 密钥?

不会。页面没有任何后端接口,密钥从输入框到验证码全程只在你的浏览器里流转。CSP 规则 connect-src 'none' 由浏览器强制执行,所有发送通道在页面加载时就被禁掉了。

断网还能生成验证码吗?

能。TOTP 的输入只有两个:密钥和当前时间。页面加载完成后断网或者开飞行模式,验证码照样每 30 秒刷新一次。这也是判断一个在线工具是否真的本地计算最简单的办法。

MFA 密钥和 MFA 验证码有什么区别?

密钥是种子,验证码是种子加当前时间算出来的结果。验证码 30 秒就作废,密钥一旦泄露,对方可以永久生成这个账号的全部动态码。所以把密钥提交给任何服务端,都等于交出第二把锁的钥匙。

支持哪些参数?阿里云和 GitHub 的能用吗?

支持 6 位、7 位、8 位,30 秒和 60 秒两种周期,SHA1、SHA256、SHA512 三种算法。阿里云、腾讯云、AWS、GitHub、Google 全部使用默认的 6 位 / 30 秒 / SHA1,直接粘贴密钥就能出码,高级参数不用动。

otpauth 链接怎么用?

认证器导出的二维码,内容就是一条 otpauth:// 链接。把整条链接粘进输入框,页面会自动拆出密钥、位数、周期、算法和账号名。链接里的账号名属于外部输入,进页面之前会先做转义。

算出来的码和手机上的认证器对不上怎么办?

九成情况是设备时间不准。TOTP 按统一时间分片,本地时钟偏差超过 30 秒就会算到相邻窗口。把系统时间设成自动同步再刷新即可,剩下的情况检查位数和周期是否和服务商一致。

为什么不做「记住密钥」功能?

刻意不做。任何持久化都会削弱「关掉页面就没了」这个承诺。密钥更适合放在密码管理器或认证器里,这个页面只负责一次性计算。

延伸阅读

  • RFC 6238:TOTP 算法的原始规范,本页实现按它来。
  • MDN · SubtleCrypto:本页的 HMAC 运算跑在这个浏览器内置接口上。
  • 阿里云 RAM 文档:绑定 MFA 设备的官方步骤,密钥就是在这一步拿到的。