ns2250225 / FolderLock
git clone https://github.com/ns2250225/FolderLock.git
v1.0 · 1mo ago
windodws系统的文件夹加锁工具
+5
stars, 24h · #2,599
+~35
stars, 7 days · #3,243
+~150
stars, 30 days · #3,314
56
★ total · +35% this week
4
forks · 1 open issues
Star history (as recorded here)
LanguageRust
License—
Created2026-09-03 (1mo ago)
Last push1mo ago
Watchers1
OwnerUser
Links
README excerpt
# 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 使用信封加密: [code] 密码和安全恢复密钥只用于解包随机主密钥,应用不会保存用户密码。安全恢复密钥丢失且忘记密码后,保险箱内容无法恢复。 ### 磁盘结构 [code] `header.json` 不包含明文密码、主密钥、恢复密钥、文件名或文件内容。 ## 项目结构 [code] ## 开发环境 - Windows 10 或 Windows 11 - Rust stable(MSVC 工具链) - Node.js 20 或更高版本 - WebView2 Runtime 安装前端依赖时使用 npmmirror: [code] Cargo 已通过 `.cargo/config.toml` 配置 rsproxy,无需额外设置。 ### 启动桌面端 [code] ### 运行测试 [code] ### 构建 Windows 安装包 [code] 安装包生成在: [code] ## CLI [code] ## 数据安全提示 - 本项目提供数据加密,不承诺安全擦除。SSD 磨损均衡、TRIM、系统还原、云盘历史版本和备份可能保留旧数据。 - 加密期间不要强制结束进程、断电或拔出移动磁盘。 - 不要手动移动、重命名或修改隐藏的 `.folderlock` 保险箱内容。 - 不要只保留一份重要数据;加密软件不能替代备份。 - 当前版本尚未经过独立密码学安全审计,不建议直接用于唯一副本或关键生产数据。 ## 当前限制 - 当前解锁模式会将文件恢复为普通目录,并非 WinFsp 实时虚拟文件系统挂载。 - Windows Hello、企业多用户、远程锁定及跨设备共享尚未实现。 - 资源管理器集成使用当前用户注册表配置,不会修改所有用户的系统级设置。 ## 参与开发 欢迎提交 Issue 和 Pull Request。涉及加密格式、密钥处理、事务提交或删除逻辑的修改,请同时增加测试并说明兼容性和数据迁移影响。