EasyAuth:基于 Flutter 的本地双因素认证应用项目

开源、离线可用、数据自主的 2FA 身份验证器

分支2Tags2
文件最后提交记录最后更新时间
16 天前
16 天前
2 个月前
16 天前
1 个月前
5 个月前
1 个月前
4 个月前
5 个月前
2 个月前
4 个月前
16 天前
2 个月前
5 个月前
6 个月前
14 天前
14 天前
14 天前
14 天前
4 个月前
2 个月前
2 个月前
2 个月前
1 个月前
1 个月前
EasyAuth

EasyAuth

开源、离线可用、数据自主的 2FA 身份验证器

官网 · GitHub · Gitee · GitCode

English · 繁體中文 · 한국어

License

GitHub 下载 Gitee 下载 GitCode 下载

简介

EasyAuth 是一款开源的本地双因素认证(2FA)应用,支持 WebDAV 与 S3 云端备份(坚果云、七牛云、AWS S3 等),兼顾数据可控与多端同步。

基于 Flutter 开发。官方安装包目前只提供 Android 版本;iOS 与 Windows / macOS / Linux 保留了完整工程目录,可自行编译。生物识别解锁、防截屏依赖系统接口,仅 Android / iOS 可用。

截图

EasyAuth EasyAuth

功能特性

  • 数据本地存储:2FA 密钥保存在设备加密区域(Android Keystore / iOS Keychain)
  • 加密云备份:支持 WebDAV 与 S3 兼容存储,AES-256-GCM 端到端加密
  • 兼容 Google Authenticator:支持 otpauth:// 协议与迁移二维码导入/导出
  • 生物识别保护:指纹 / 面容解锁,切换后台自动锁定
  • 防截屏:可开启安全窗口,阻止截图与录屏
  • 多语言:支持简体中文 / 繁體中文 / English / 한국어 / 日本語

下载安装

  • Android:在 GitHub Releases、Gitee Releases 或 GitCode Releases 下载
    • easyauth-<版本>-release.apk:通用包,兼容所有设备
    • easyauth-<版本>-arm64-v8a-release.apk、armeabi-v7a、x86_64:按 CPU 架构拆分,体积更小
    • 每个 APK 都附带同名 .sha1 文件,可用于校验下载完整性
  • 其他平台:iOS、Windows、macOS、Linux 需自行编译,方法见「构建运行」

技术栈

  • 框架:Flutter / Dart 3
  • 状态管理:Provider
  • 本地存储:flutter_secure_storage
  • 加密:encrypt(AES-256-GCM)、PBKDF2-HMAC-SHA256 密钥派生
  • 生物识别:local_auth
  • 防截屏:flutter_windowmanager_plus
  • 二维码:mobile_scanner(扫描)、qr(生成)、otpauth-migration protobuf
  • 云备份:http、xml(WebDAV)、aws_signature_v4(S3)
  • 备份打包:archive、path_provider
  • 国际化:flutter_localizations、intl(ARB 资源,5 种语言)

第三方依赖详见:https://easyauth.easydebug.net/third-party

项目结构

EasyAuth/
├── lib/
│   ├── main.dart                    # 应用入口
│   ├── models/                      # 数据模型:setting、two_factor_account
│   ├── providers/                   # 状态管理:locale_provider
│   ├── screens/                     # 页面:首页、添加/编辑、导入/导出、设置、关于
│   ├── services/                    # 服务:backup、otp、security、storage
│   ├── utils/                       # 工具:exceptions、qr、s3、style、webdav
│   └── l10n/                         # ARB 语言资源与生成的本地化代码
├── assets/icon/                     # 应用图标
├── docs/                            # README 配图
├── android/ ios/ linux/ macos/ windows/   # 各平台工程目录
├── test/                            # 测试
├── decryption.py                    # 备份解密脚本(Python)
├── pubspec.yaml                     # 依赖配置
└── l10n.yaml                        # 国际化配置

构建运行

环境要求

  • Flutter 3.x(Dart 3.12+)
  • Android:Android SDK(Android Studio)
  • iOS / macOS:Xcode
  • Windows / Linux:对应平台的桌面工具链

运行

flutter pub get
flutter run

打包

flutter build apk        # Android
flutter build appbundle  # Android(AAB,上架 Google Play 用)
flutter build ios        # iOS
flutter build windows    # Windows
flutter build macos      # macOS
flutter build linux      # Linux

备份与解密

云备份文件命名为 backup_<时间戳>.zip,包内含 salt 与 data 两个条目:

  1. 用 PBKDF2-HMAC-SHA256(600,000 次迭代,OWASP 对 SHA-256 的建议值)从备份密码与 salt 派生出 256 位密钥
  2. 用 AES-256-GCM 解密 data(格式:12 字节 nonce + 密文 + 16 字节 GCM 认证标签)

即使不用 App,也可以离线解开自己的备份——仓库根目录的 decryption.py 使用同样的算法,并输出每个账户的 otpauth:// 链接:

pip install pycryptodomex
python decryption.py backup_20260731_120000.zip
python decryption.py backup_20260731_120000.zip -p 你的备份密码 -o uris.txt

许可证

本项目采用 Apache License 2.0 开源协议。

相关链接

微信公众号

EasyAuth 微信公众号

扫码关注 EasyAuth 微信公众号。

项目介绍

开源、离线可用、数据自主的 2FA 身份验证器

https://easyauth.easydebug.net定制我的领域