# 密码管理器 **Repository Path**: brisklan/bs-password-manager ## Basic Information - **Project Name**: 密码管理器 - **Description**: 一个密码管理器APP,离线使用,支持导出数据、导入数、云备份等 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2025-07-31 - **Last Updated**: 2026-06-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 密码管理器 ## 项目简介 这是一个基于 `uni-app + Vue2` 开发的本地密码管理器,当前阶段以 Android App 为主,核心目标是提供单机安全密码库,并为后续云同步预留数据模型。 当前版本已经不再使用旧的模拟接口和旧存储组件,密码数据统一进入新的本地保险库架构: - 本地初始化密码库 - 生成并保存恢复密钥 - 图案快捷解锁 - 可选生物识别解锁 - 本地加密存储 - 加密备份导出 / 导入 - 兼容旧版明文导出迁移 ## 当前功能 - 初始化本地密码库 - 首次创建时生成恢复密钥 - 图案解锁 - 可选指纹 / 面容快捷解锁 - 自动锁定 - 密码条目新增、编辑、删除、搜索 - 独立复制密码 - 长按复制用户名 / 密码 / 用户名和密码 - 强密码生成 - 密码强度检测 - 加密备份文件导出 - 加密备份文本复制 - 加密备份导入 - 旧版 `passwords` 导出结构导入 - 主题切换 ## 技术栈 - `uni-app` - `Vue 2` - `crypto-js` - `plus.sqlite` ## 当前存储与安全设计 ### 本地数据库 - App 端优先使用 `plus.sqlite` - 若当前运行环境不支持 SQLite,则回退到 `uni.setStorageSync` ### 密钥模型 - `Data Key`:用于加密密码条目 - `Recovery Key`:用于恢复、换机、导入加密备份 - `Device Secret`:用于本机快捷解锁 - `Pattern`:用于解开本机 `Device Secret` ### 目前已实现 - 密码条目密文保存 - 恢复密钥包装 `Data Key` - 图案包装 `Device Secret` - 可选生物识别放行快捷解锁 ### 当前限制 - 生物识别解锁目前仍是“本地保存设备密钥 + 生物识别放行”,还不是 Android Keystore 级别硬件保护 - 云同步还未接入,当前仅完成数据结构预留 - 旧版明文导出只能在“当前新金库已初始化并解锁”时导入 ## 页面说明 - `pages/login/login.vue` - 初始化密码库 - 图案解锁 / 生物识别解锁 / 恢复密钥解锁 - `pages/index/index.vue` - 首页概览 - 显示条目数、最近备份、快捷解锁状态 - `pages/list/list.vue` - 密码列表 - 搜索、复制、编辑、删除 - `pages/backup/backup.vue` - 创建加密备份 - 从文本或文件导入备份 - 兼容旧版导出迁移 - `pages/settings/settings.vue` - 主题 - 自动锁定 - 重建快捷解锁 - 清空本地密码库 - `pages/generator/generator.vue` - 生成随机密码 - `pages/strength/strength.vue` - 检测密码强度 ## 项目结构 ```text . ├── components │ ├── PasswordInput.vue │ └── PatternLock.vue ├── docs │ └── superpowers │ └── specs │ └── 2026-06-19-password-manager-phase1-design.md ├── pages │ ├── backup │ │ └── backup.vue │ ├── generator │ │ └── generator.vue │ ├── index │ │ └── index.vue │ ├── list │ │ └── list.vue │ ├── login │ │ └── login.vue │ ├── settings │ │ └── settings.vue │ └── strength │ └── strength.vue ├── services │ ├── backup.js │ ├── biometric.js │ ├── constants.js │ ├── crypto.js │ ├── storage.js │ ├── time.js │ └── vault.js ├── App.vue ├── manifest.json ├── package.json └── pages.json ``` ## 关键服务说明 - `services/vault.js` - 保险库主服务 - 初始化、解锁、自动锁定、CRUD、备份导入导出 - `services/storage.js` - 本地存储抽象 - SQLite / 本地缓存双通道 - `services/crypto.js` - 数据加密、密钥包装、备份序列化 - `services/biometric.js` - 生物识别能力检测与认证 - `services/backup.js` - 备份导出封装 - `services/time.js` - 本地时间显示格式化 ## 运行方式 ### 安装依赖 ```bash npm install ``` ### 开发运行 使用 `HBuilderX` 打开项目后直接运行。 ### 当前依赖 ```json { "dependencies": { "crypto-js": "^4.2.0" } } ``` ## Android 权限 当前打包配置中已包含: - `READ_EXTERNAL_STORAGE` - `WRITE_EXTERNAL_STORAGE` - `INTERNET` - `CAMERA` - `WAKE_LOCK` - `ACCESS_NETWORK_STATE` 其中“从文件读取备份”会在 Android 真机环境中动态申请文件读取权限。 ## 备份说明 ### 新版加密备份 - 结构包含 `backup_format_version / meta / keys / items` - 导入时需要恢复密钥 ### 旧版导出兼容 - 结构包含 `version / exportTime / passwords` - 可迁移进入当前新金库 - 不属于新加密备份格式 ## 已知问题 - 生物识别还未接 Android Keystore 硬件保护 - 未做完整云同步 - 当前没有现成的自动化测试脚本 ## 后续规划 1. 接入 Android Keystore 保护本机快捷解锁密钥 2. 支持旧版备份在未初始化设备上直接迁移 3. 接入云同步 4. 补充真机联调和自动化测试