Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CipherLite

CipherLite 是一个轻量级本地密码管理器,使用 C++20、Qt6 Widgets、CMake、SQLite3 和 libsodium 构建。每个 vault 都保存为一个 .clv 文件,文件内容是经过认证加密的 SQLite 数据库镜像;解密后的数据库只在进程内存中使用。

当前功能

  • 创建新的 .clv vault,并设置文件位置、主密码、加密算法和 Argon2id KDF 预设。
  • 打开已有 vault,支持最近打开的 vault 列表,并自动隐藏不存在的文件。
  • 添加、编辑、删除密码条目。
  • 条目字段包括标题、用户名、密码、URL 和备注。
  • 默认在表格中掩码显示密码,可显示当前选中条目的密码。
  • 搜索标题、用户名、URL 和备注,搜索不会匹配密码内容。
  • 拖拽条目行调整顺序,并在 vault 中持久化。
  • 复制选中条目的标题、用户名、密码、URL 或备注。
  • 添加和编辑条目时显示本地密码强度提示。
  • 支持系统语言、英文和中文界面偏好。
  • 使用 Ctrl+N 添加条目、Ctrl+E 编辑条目、Delete 删除条目、Ctrl+C 复制选中条目的密码。

技术栈

  • C++20
  • Qt6 Widgets 和 Qt Concurrent
  • CMake 3.24+
  • SQLite3
  • libsodium

构建与测试

推荐使用项目自带的构建脚本。它会执行 CMake 配置、构建、运行时依赖部署和测试:

.\scripts\build.ps1

常用参数:

.\scripts\build.ps1 -Clean
.\scripts\build.ps1 -Config Release
.\scripts\build.ps1 -BuildDir build-release -Config Release -Parallel 8
.\scripts\build.ps1 -Target cipherlite -NoTests
.\scripts\build.ps1 -Generator "Ninja"

脚本默认使用 build 目录、Debug 配置,并在构建后运行测试。若存在 .tools\msys64\ucrt64\bin,脚本会临时加入 PATH,默认选择 Ninja,并将本地运行时 DLL 复制到 cipherlite.exe 旁边。

也可以手动运行 CMake:

cmake -S . -B build
cmake --build build
ctest --test-dir build --output-on-failure

当前自动化测试覆盖核心加密、vault 保存与打开、密码仓库操作、密码强度评分和条目搜索。

运行

构建完成后,Windows 上通常可以运行:

.\build\cipherlite.exe

如果使用多配置生成器,可执行文件可能位于类似 build\Debug\cipherlite.exebuild\Release\cipherlite.exe 的目录中。

安全设计

  • vault 文件使用认证加密保存到磁盘。
  • vault 头部作为附加认证数据参与加密和解密,头部或密文被篡改会导致认证失败。
  • 主密码通过 libsodium Argon2id 派生 32 字节 vault 密钥。
  • 创建 vault 时可选择自动算法、AES-256-GCM 或 XChaCha20-Poly1305。
  • 自动算法会在 crypto_aead_aes256gcm_is_available() 成功时优先使用 AES-256-GCM,否则回退到 XChaCha20-Poly1305。
  • 派生密钥和明文缓冲区会在可行时使用 sodium_memzero 清理。
  • UI 对错误密码和被篡改 vault 使用通用认证失败提示,避免泄露失败原因。

当前实现仍会在 vault 打开期间把解密后的条目字段和主密码保留在进程内存中。剪贴板自动清理、自动锁定、内存锁定、崩溃转储抑制等系统级加固尚未实现。

尚未实现

  • 剪贴板自动清理。
  • 自动锁定 vault。
  • 密码生成器。
  • 导入和导出。
  • 标签、文件夹、收藏、自定义字段或附件。
  • 多 vault 窗口、后台 vault 会话或云同步。

项目结构

  • include/cipherlite/:核心类型和 Qt Widgets 头文件。
  • src/:核心实现和 Qt Widgets UI 实现。
  • tests/:核心加密、vault、仓库、密码强度和搜索测试。
  • docs/FEATURES.md:当前用户可见功能和暂缓功能。
  • docs/architecture.md:模块划分、vault 文件格式和安全约束。
  • scripts/build.ps1:标准构建、部署和测试脚本。
  • resources/:应用图标、Qt 资源和 Windows 资源文件。
  • translations/:Qt 翻译文件。

开发约束

  • UI 保持在 Qt Widgets 中实现。
  • 核心 vault、加密和数据库代码保持独立于 Qt。
  • 不将明文 vault 内容写入磁盘。
  • 不记录主密码、派生密钥、明文条目、salt、nonce 或 ciphertext。
  • 修改加密、数据库迁移或 vault 格式时,同步更新 docs/architecture.mddocs/FEATURES.md 和相关测试。

About

Codex vibe coding 项目,轻量级本地密码管理器,自用

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages