# FolderLock **Repository Path**: ns2250225/FolderLock ## Basic Information - **Project Name**: FolderLock - **Description**: windodws系统的文件夹加锁工具 - **Primary Language**: Rust - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-04 - **Last Updated**: 2026-09-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FolderLock FolderLock 是一款面向 Windows 10/11 的本地文件夹加密工具。它将“选择文件夹、输入密码、完成加密”作为核心交互,并通过资源管理器右键菜单、同名锁定入口和系统托盘提供日常使用体验。 > 项目仍处于早期版本。请先使用非重要文件测试,并始终为重要数据保留独立备份。 ## 主要功能 - 使用 AES-256-GCM 对文件内容进行认证加密。 - 使用 Argon2id 从用户密码派生密钥加密密钥(KEK)。 - 每个保险箱使用独立的随机 256 位主密钥。 - 文件以 1 MiB 分块流式处理,不会一次性载入整个大文件。 - 文件名、目录名、目录结构、大小和时间等元数据一并加密。 - 创建保险箱时生成独立安全恢复密钥;忘记密码后可使用该密钥解锁。 - 错误密码、错误恢复密钥及被篡改的数据无法通过认证。 - 采用临时目录、完整性校验和原子替换流程,降低中断造成的数据损坏风险。 - 支持中文路径和嵌套目录。 - 支持保险箱健康检查和密码修改。 - 支持永久删除保险箱;已解锁保险箱需要安全警告和手动输入名称二次确认。 - 提供桌面端和命令行工具。 ## Windows 使用方式 1. 安装并启动 FolderLock。普通启动后应用自动隐藏到系统托盘。 2. 在资源管理器中右键需要保护的文件夹,选择“使用 FolderLock 加密”。 3. 设置并确认密码,等待加密完成。 4. 离线保存应用显示的安全恢复密钥。 5. 锁定后,资源管理器中的入口名称保持不变,真实密文存放在同级隐藏目录 `.文件夹名.folderlock` 中。 6. 双击锁定入口,输入密码或选择“忘记密码?使用安全密钥恢复”。 左键单击托盘图标可以打开主界面。关闭主窗口默认只会隐藏到托盘;需要彻底退出时,请使用托盘菜单中的“退出”。 ## 设置 设置页面目前支持: - 登录 Windows 后自动启动。 - 开启或关闭资源管理器右键加密菜单。 - 设置关闭窗口后是否继续驻留系统托盘。 设置保存在当前 Windows 用户的本地应用数据目录,不包含密码、主密钥或恢复密钥。 ## 安全设计 FolderLock 使用信封加密: ```text 用户密码 + 随机 Salt │ ▼ Argon2id │ ▼ KEK ── AES-256-GCM ──► 加密后的主密钥 │ 随机恢复密钥 ── Argon2id ─────────┘ │ ▼ 文件块和元数据加密 ``` 密码和安全恢复密钥只用于解包随机主密钥,应用不会保存用户密码。安全恢复密钥丢失且忘记密码后,保险箱内容无法恢复。 ### 磁盘结构 ```text D:\Photos # 资源管理器中的同名锁定入口 D:\.Photos.folderlock # 隐藏的加密保险箱 ├── header.json # 公开格式信息、加密主密钥和加密元数据 ├── transaction.json # 事务状态 └── blocks\ # 独立认证的加密数据块 ``` `header.json` 不包含明文密码、主密钥、恢复密钥、文件名或文件内容。 ## 项目结构 ```text FolderLock/ ├── apps/ │ ├── cli/ # Rust 命令行工具 │ └── desktop/ # React + TypeScript + Tauri 桌面端 │ └── src-tauri/ # Windows 集成及桌面后端 ├── crates/ │ └── folderlock-core/ # 加密容器、密钥和事务核心 ├── .cargo/config.toml # rsproxy 国内镜像配置 ├── Cargo.toml # Rust 工作区 └── prd.md # 产品需求文档 ``` ## 开发环境 - Windows 10 或 Windows 11 - Rust stable(MSVC 工具链) - Node.js 20 或更高版本 - WebView2 Runtime 安装前端依赖时使用 npmmirror: ```powershell npm --prefix apps/desktop install --registry=https://registry.npmmirror.com ``` Cargo 已通过 `.cargo/config.toml` 配置 rsproxy,无需额外设置。 ### 启动桌面端 ```powershell npm run tauri -- dev ``` ### 运行测试 ```powershell cargo test --workspace npm run build ``` ### 构建 Windows 安装包 ```powershell npm --prefix apps/desktop run tauri -- build --bundles nsis ``` 安装包生成在: ```text target\release\bundle\nsis\ ``` ## CLI ```powershell # 锁定文件夹 cargo run -p folderlock -- lock D:\Photos # 使用密码解锁 cargo run -p folderlock -- unlock D:\.Photos.folderlock # 使用恢复密钥解锁 cargo run -p folderlock -- unlock D:\.Photos.folderlock --recovery # 查看状态 cargo run -p folderlock -- status D:\.Photos.folderlock # 完整健康检查 cargo run -p folderlock -- health D:\.Photos.folderlock # 修改密码 cargo run -p folderlock -- change-password D:\.Photos.folderlock # 查找未完成事务 cargo run -p folderlock -- recover D:\ ``` ## 数据安全提示 - 本项目提供数据加密,不承诺安全擦除。SSD 磨损均衡、TRIM、系统还原、云盘历史版本和备份可能保留旧数据。 - 加密期间不要强制结束进程、断电或拔出移动磁盘。 - 不要手动移动、重命名或修改隐藏的 `.folderlock` 保险箱内容。 - 不要只保留一份重要数据;加密软件不能替代备份。 - 当前版本尚未经过独立密码学安全审计,不建议直接用于唯一副本或关键生产数据。 ## 当前限制 - 当前解锁模式会将文件恢复为普通目录,并非 WinFsp 实时虚拟文件系统挂载。 - Windows Hello、企业多用户、远程锁定及跨设备共享尚未实现。 - 资源管理器集成使用当前用户注册表配置,不会修改所有用户的系统级设置。 ## 参与开发 欢迎提交 Issue 和 Pull Request。涉及加密格式、密钥处理、事务提交或删除逻辑的修改,请同时增加测试并说明兼容性和数据迁移影响。