验证码

加密

在线获取双重验证(2FA / TOTP)动态验证码,输入 Base32 密钥或粘贴 otpauth 链接即可生成,展示服务名 / 账号 / 备注等账号信息,支持从二维码图片或截图粘贴导入(含 Google Authenticator 导出的二维码),并可按全部或勾选部分导出 txt / json / csv 备份,全部在浏览器本地计算。

每行一条,可一次导入多个;输入框内按 Ctrl / ⌘ + Enter 也可添加

从二维码图片导入

本地识别,图片不会上传

拖放二维码图片到此处,或点击选择(可多选)

也可以直接按 Ctrl / ⌘ + V 粘贴截图

支持 Google Authenticator 等验证器导出的二维码(一次可导入多张)、单条 otpauth 二维码,以及本工具导出的 .txt / .json / .csv 备份文件

导出账号

还没有可导出的账号:先添加密钥,或从「本地记录」中重新启动。
导出的文件是明文密钥,仅适合自己备份 / 迁移到别处,请勿上传到网盘或聊天工具。

工具说明

  • 演示密钥:
    7J64V3P3E77J3LKNUGSZ5QANTLRLTKVL
    (点击可添加)
  • 在网站的账号安全设置中开启两步验证后,通常会提供一个 Base32 密钥(一串大写字母与数字 2-7 的组合)。把它粘贴到右侧表单并点击「添加并开始运行」,即可实时生成当前有效的验证码,每 30 秒自动刷新一次。点击时会先用这条密钥试算一次验证码:算不出正确位数的密钥不会添加进列表,只在表单下方提示原因,避免列表里出现一张永远只有「------」的死卡片;添加成功后新卡片会排到列表最前面,若这条密钥原本已经在运行中,则把它原来那张卡片挪到最前面并提示,不会重复生成。
  • 支持同时运行多个密钥:输入框里每行放一个密钥(或一个 otpauth 链接),一次导入后会同时生成多张验证码卡片,样式与单个时一致,倒计时与到期警示各自独立。页面左侧是运行中的验证码列表,右侧是添加表单,最近添加 / 最近启动的卡片排在最上面。
  • 每张卡片的「停运」会把该密钥从运行区移除,转入左侧「本地记录」列表并保存在本机浏览器(localStorage),不再占用计算;在列表里点击任意一条即可重新启动。如果这条密钥以后都不用了,可以点卡片右上角的垃圾桶图标,或「本地记录」每行右侧的删除按钮,把它从运行区与本地记录里一起清掉(删除前会确认一次,删掉后只能重新粘贴密钥才能恢复)。
  • 支持直接粘贴 otpauth:// 链接(验证器 App 扫码用的链接),会自动解析其中的密钥、账户名、算法、位数与周期,并把这三项参数带进这张卡片。
  • 账号信息:每张卡片顶部左侧是头像(取账号名的首字符,保留原样大小写),右侧第一行是账号名与当前使用的密钥原始值(点密钥可复制),没有账号名时头像与账号都显示「?」;第二行是服务名 / 发布方、备注与这条密钥的添加时间(精确到秒),这三项取自 otpauth 链接的 issuer / label 与本地记录,早期的本地记录 / 云端快照没记时间的会显示「添加于 ?」。点卡片右上角的铅笔图标可以自行补全或修改服务名、账号与备注;纯 Base32 密钥也能命名,账号多的时候更好区分。修改只影响本页显示,不会改变密钥与验证码计算。
  • 从二维码图片导入:把验证器 App 的导出二维码截图拖进「从二维码图片导入」区域,或直接按 Ctrl / ⌘ + V 粘贴,也可以点击选择图片(支持一次多张)。识别在浏览器本地完成,支持 Google Authenticator 等验证器导出的
    otpauth-migration://
    二维码(含一次导出多张的场景)与单条 otpauth 二维码,识别出的账号会自动带出服务名与账号名并开始运行。
  • 导出与备份:在「导出账号」区域勾选需要的账号就能只导出其中一部分,也可以一键全部导出;格式有 otpauth 链接(.txt,通用)、JSON(.json,含名称与备注)、CSV(.csv,可直接用 Excel 打开)和迁移二维码。导出的 .txt / .json / .csv 文件拖回导入区即可恢复,建议离线保存——文件里是明文密钥,泄露等同于把验证码交出去。
  • 迁移二维码:把勾选的账号打包成 Google Authenticator 的迁移二维码(账号多时会拆成多张,逐个扫即可),在 Google Authenticator 里选「转移账号 → 导入账号」扫码就能批量导入;微软验证器不支持这种二维码,请改用 .txt 链接逐条添加。注意迁移格式不携带刷新周期(导入端一律按 30 秒),也不支持 6 / 8 位以外的验证码位数,这两类账号请用文件格式导出。
  • 只粘贴 Base32 密钥时,工具无法知道该密钥用的是哪种算法、几位码、多少秒周期,只能按默认值(SHA-1 / 6 位 / 30 秒)计算。如果和验证器 App 或其他网页工具的结果不一致,优先怀疑这里:改用 otpauth:// 链接粘贴,或展开该卡片的「参数」调整后再比对。
  • 必须在倒计时结束前输入验证码登录或验证,否则验证码会失效。若提示已过期,稍等一秒会自动生成新码。
  • 也可以把密钥加在网址后面直接访问,示例:/tools/2fa?key=你的密钥(多个密钥用逗号或换行分隔),打开后会自动开始运行,适合分享给新手使用。
  • 验证码强依赖精确时间:counter 直接由 UTC 时间推导,时钟偏差只要超过半个周期(默认 15 秒)就会稳定取到错位的码,表现就是「和别的工具结果不一致,而且怎么调参数都对不上」。工具默认按本机时间计算——系统时钟由 NTP 维护,精度在毫秒级;怀疑时钟不准可先执行
    w32tm /stripchart /computer:cn.pool.ntp.org /samples:5 /dataonly
    核对真实偏差。
  • 「时间源」三选一,默认本机时间,对页面上所有验证码统一生效。切到「第三方时间源」会向 timeapi.io / time.cloudflare.com / worldtimeapi.org 并发查询当前时间并取中位数(只查时间,请求里不含密钥),适用于系统时钟失步又暂时改不了机器时间的场景;「本站 Date 头」仅用于对比排查——HTTP 响应头只有 1 秒粒度,还可能被 CDN、WAF 或本地代理改写,不适合当时间基准。
  • 验证码在浏览器本地计算(Web Crypto HMAC-SHA1/256/512);默认情况下正在运行的密钥与「本地记录」都只保存在本机浏览器中,不会上传到服务器。
  • 计算遵循 RFC 6238 / RFC 4648,已通过 RFC 6238 官方测试向量(SHA-1 / SHA-256 / SHA-512)与独立实现的随机对拍验证。