{"repo":"wuzf/2fa","free":true,"listed":false,"github":"https://github.com/wuzf/2fa","clone":"git clone https://github.com/wuzf/2fa.git","description":"Two Factor Authentication","language":"JavaScript","stars":430,"topics":["2fa","authenticator","backup","cloudflare-workers","encryption","hotp","javascript","otp","pwa","security"],"license":"MIT","category":"security-tools","readme_excerpt":"🔐 2FA 基于 Cloudflare Workers 的两步验证密钥管理系统。免费部署、全球加速、支持 PWA 离线使用。 English 主要特性： TOTP/HOTP 验证码自动生成 · 二维码扫描/图片识别/粘贴截图/拖拽图片添加密钥 · AES-GCM 256 位加密存储 · 从 Google Authenticator、Aegis、2FAS、Bitwarden 等应用批量导入 · 多格式导出（TXT/JSON/CSV/HTML/Google 迁移二维码） · 自动备份与还原 · WebDAV/S3/OneDrive/Google Drive 远程备份同步 · 设置面板（密码修改/同步设置） · 深色/浅色主题 · 响应式设计适配手机/平板/桌面 📸 截图预览 桌面端 平板端 手机端 :-------------------------------------------: :------------------------------------------: :------------------------------------------: 🚀 快速部署 在线体验 访问演示站点（密码 2fa-Demo. ）： https://2fa-dev.wzf.workers.dev 一键部署（推荐） 推荐一键部署；所有用户统一通过 Sync Upstream 原地升级，禁止通过删除 Worker、删除仓库或重装方式升级。 1. 点击上方按钮，使用 GitHub 登录并授权 2. 登录 Cloudflare 账户，点击 Deploy 等待部署完成（KV 存储自动创建） 3. 打开 Cloudflare 给你的 Workers 链接， 设置管理密码 即可开始使用 Git 自动构建会直接使用仓库中的 wrangler.toml 部署；当前配置已显式声明 SECRETS KV ，Wrangler 会在首次部署时自动创建所需 KV，并在后续部署中继续复用当前 Worker 已绑定的资源。 如果你在 Cloudflare Dashboard 中手动配置 Git 构建命令， 部署命令请使用 npm run deploy ，不要直接写 npx wrangler deploy ，这样会保留项目里的版本注入流程，并和仓库默认部署入口保持一致。 推荐：启用数据加密 部署后，在 Cloudflare Dashboard → Worker → Settings → Variables 中添加 Secret ENCRYPTION KEY ： ENCRYPTION KEY 是解密现有数据的主密钥。 推荐设置 ，前提是你会把原始值立即保存到密码管理器、离线备份或其他安全位置。 如果你无法确保保存原值， 宁可暂时不设置，也不要设置后丢失 ： - 设置后：密钥列表、自动备份、WebDAV/S3/OneDrive/Google Drive 凭据都会加密存储 - 丢失后：Cloudflare 不会再次显示原值，已有加密数据和加密备份将无法读取或恢复 - 当前程序行为：检测到已有加密数据但缺少 ENCRYPTION KEY 时，会直接锁定读取和修改，避免误覆盖旧数据 版本更新 一键部署生成的是独立仓库（非 Fork），升级统一使用 Sync Upstream 工作流原地完成。 ⚠️ 升级前务必先备份数据 ：在执行版本更新前，请先通过 批量导出 或 还原配置 → 导出备份 将当前数据导出到本地，以防操作失败导致数据丢失。 ⚠️ 首次升级前需要添加工作流文件 ：一键部署创建的","default_branch":null,"files":null,"tree":[],"storefront":"/r/wuzf","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/wuzf/2fa/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}