Skip to content

itouchgod/mmh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MMH

MMH 是一个本地加密媒体保险库,用来把图片和视频加密保存在这台 Mac 上。文件不会上传到服务器,也不会离开本机。

已实现功能

  • 首次启动时创建主密码。
  • 使用主密码解锁本地保险库。
  • 拖拽导入图片和视频。
  • 点击 Add Files... 手动选择多个文件导入。
  • 导入时在后台读取文件并加密,避免大文件卡住界面。
  • 预览图片和视频,预览文件会写入临时目录并在关闭、锁定、失焦或退出时清理。
  • 删除保险库中的加密文件。
  • 导出原文件到用户选择的位置。
  • 应用失焦或进入后台时自动锁定。
  • metadata 使用解锁后的密钥加密保存,并兼容旧版明文 metadata。
  • 支持重复文件检测、文件大小显示、图片缩略图和列表排序。
  • 支持在保险库内创建加密文件夹,并把图片、视频移动到指定文件夹。
  • 支持修改主密码,会重新加密保险库文件。

暂未实现或仍可加强

  • 缩略图目前通过后台解密原图生成,大量超大图片时仍有性能优化空间。
  • 修改主密码会在内存中暂存旧/新加密数据用于回滚,大型视频很多时内存压力较高。
  • 目前没有完整的自动化 UI 测试。
  • 安全审计尚未由第三方完成。

使用方法

  1. 打开 MMH。
  2. 首次使用时输入主密码,并再次确认。主密码至少 8 个字符。
  3. 之后打开应用时,输入主密码解锁保险库。
  4. 解锁后,可以把图片或视频拖到顶部区域,也可以点击 Add Files... 选择文件。
  5. 点击列表中的文件可以打开预览。
  6. 左侧 Folders 区域可以创建保险库内文件夹;选中文件夹后导入的文件会进入该文件夹。
  7. 右键列表项可以移动到文件夹、导出或删除文件。
  8. 点击 Lock 可以手动锁定。应用失焦或进入后台时也会自动锁定。
  9. 点击 Change Password... 可以修改主密码。

安全说明

  • 主密码不会以明文保存;如果忘记主密码,保险库内容无法恢复。
  • 文件内容使用 AES-GCM 加密保存到应用支持目录。
  • metadata 会使用当前主密码派生出的密钥加密保存,包含原始文件名、文件夹名和归属关系。旧版本生成的明文 metadata 可以读取,之后重新保存会迁移到加密格式。
  • 预览时需要临时解密文件。MMH 会在关闭预览、锁定、失焦和退出时清理临时文件,但系统崩溃或异常退出时仍可能留下风险。
  • 建议在离开电脑前手动锁定,或直接退出应用。

开发说明

  • 推荐使用 Xcode 26.5 或更新版本打开 MMH.xcodeproj
  • 编译命令示例:
xcodebuild -scheme MMH -project MMH.xcodeproj -configuration Debug -destination 'platform=macOS' build
  • 主要目录:
    • MMH/Views:SwiftUI 界面。
    • MMH/ViewModels:锁定状态、导入、预览、删除、导出等业务状态。
    • MMH/Services:加密、Keychain、文件存储和临时文件清理。
    • MMH/Models:保险库条目模型。
    • MMH/Utils:文件类型识别。

后续计划

  • 补充更多单元测试和 UI 测试。
  • 优化大文件导入、缩略图生成和修改主密码时的内存占用。
  • 增加更详细的导入失败原因展示。
  • 增加设置页,例如是否启用失焦自动锁定。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages