基于时间的一次性密码 (TOTP) 生成器 Chrome 扩展,用于双因素认证。支持自动填充验证码到网页、多语言界面、数据导入导出等高级功能。
- 生成标准 30 秒间隔的 TOTP 验证码
- 支持 Base32 编码的密钥格式
- 使用 Web Crypto API 实现 HMAC-SHA1 安全加密
- 实时可视化倒计时进度环
- 验证码格式化显示(3位数字分组)
- 左键点击:自动填充验证码到当前网页的输入框
- 回退机制:填充失败时自动复制到剪贴板
- 右键点击:删除账户(带确认对话框)
- 支持键盘导航和无障碍访问
- 本地安全存储账户信息(Chrome Storage API)
- JSON 格式数据导入导出功能
- 重复账户检测和处理
- 自动保存表单状态和滚动位置
- 应用状态持久化
- 内置中文(简体)和英文语言包
- 动态语言切换,无需重启
- 完整的 UI 文本国际化
- 语言偏好自动保存
- 现代化渐变 UI 设计
- 响应式布局适配
- 流畅的动画效果
- Toast 消息提示系统
- 空状态友好提示
base32Decode()
- Base32 解码算法generateTOTP()
- TOTP 代码生成(RFC 6238 标准)getRemainingSeconds()
- 当前周期剩余时间计算
- 应用生命周期管理
- 验证码管理器 (
codeManager
) - 定时器控制和动画循环
- 事件监听器统一管理
- Chrome Storage API 封装
- 账户数据持久化
- 应用状态保存和恢复
- 异步存储操作
- DOM 操作和事件处理
- 进度环组件管理
- Toast 消息系统
- 确认对话框
- 设置页面控制
- JSON 格式数据导出
- 文件导入验证和解析
- 重复账户处理逻辑
- 导入成功后 UI 更新
- 网页输入框自动检测
- TOTP 代码自动填充
- 页面内容脚本注入
- 填充结果反馈
- 多语言文本管理
- 动态语言切换
- UI 文本实时更新
- 语言偏好存储
- DOM 操作辅助函数
- 键盘事件处理
- Chrome API 封装
- 数据验证工具
- 异步操作辅助
- 添加账户:输入验证 → Secret 格式检查 → TOTP 测试生成 → 存储保存 → UI 更新
- 删除账户:右键触发 → 确认对话框 → 数据删除 → 重新渲染列表
- 定时更新:30秒周期检测 → 批量生成验证码 → 更新缓存 → UI 刷新
- 进度显示:实时计算剩余时间 → 更新进度环 → 动画渲染
- 自动填充:检测 Chrome API → 查询当前标签页 → 注入内容脚本 → 查找输入框 → 填充验证码
- 复制回退:填充失败检测 → 复制到剪贴板 → 显示提示消息
- 状态保存:表单输入监听 → 滚动位置记录 → 本地存储更新
- 状态恢复:应用启动 → 读取存储数据 → 恢复 UI 状态
访问 Chrome Web Store 直接安装
- 克隆此仓库到本地
- 打开 Chrome 浏览器,访问
chrome://extensions/
- 在右上角启用"开发者模式"
- 点击"加载已解压的扩展程序",选择项目根目录
- Node.js 16+ 和 npm(用于图标生成)
- Chrome 浏览器 88+(支持 Manifest V2)
- 安装依赖:
npm install
- 生成图标资源:
node generate_icons.js
- 加载扩展进行开发测试
mfa/
├── manifest.json # 扩展配置文件
├── popup.html # 主界面 HTML
├── popup.js # 主应用逻辑(1000+ 行)
├── totp.js # TOTP 核心算法
├── i18n.js # 国际化语言包
├── generate_icons.js # 图标生成脚本
├── icons/ # 扩展图标资源
├── website/ # 官网源码
└── package.json # 项目依赖配置
popup.js
- 主应用文件,包含所有核心模块和业务逻辑totp.js
- TOTP 算法实现,符合 RFC 6238 标准i18n.js
- 完整的中英文语言包和国际化系统popup.html
- 响应式 UI 界面,支持现代浏览器特性
扩展需要以下权限:
storage
- 本地数据存储activeTab
- 当前标签页访问(用于自动填充)scripting
- 内容脚本注入(用于页面操作)