# ob-folder-encrypt **Repository Path**: chrvip1/ob-folder-encrypt ## Basic Information - **Project Name**: ob-folder-encrypt - **Description**: 设置某个目录为加密的,然后这个目录中的笔记都是加密笔记,要打开这里边的笔记,必须先输入密码的功能。 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-22 - **Last Updated**: 2026-01-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 在Obsidian做一个插件, 实现设置某个目录为加密的,然后这个目录中的笔记都是加密笔记,要打开这里边的笔记,必须先输入密码的功能。 参考插件: Password Protection、Meld Encrypt 并且已经有类似的实现思路可供参考。下面这个表格汇总了实现这一功能的核心思路和现有参考。 | 特性 | 实现思路 / 现有参考 | | ---------------- | ------------------------------------------------------------ | | **核心原理** | 插件监听笔记打开事件,当检测到用户试图打开指定加密目录下的笔记时,弹出密码验证模态框,验证通过后才允许访问。 | | **密码验证时机** | 在 Obsidian 的 `onLoad`插件生命周期函数或文件打开事件中挂钩子,拦截对受保护文件的访问。 | | **现有插件参考** | **Password Protection 插件** 实现了类似功能(为指定路径设置密码,打开笔记前验证),但其机制是“验证锁”而非“加密存储”。 | | **加密存储参考** | **git-cryptx** 或 **Meld Encrypt** 等工具展示了如何对文件内容进行 AES-256 等算法加密。一个完整的加密插件需要结合这两者。 | | **插件开发基础** | Obsidian 提供了完善的插件开发 API,允许开发者创建设置界面、注册事件、操作文件等。 | ### 💡 插件实现路径 要实现这个功能,主要有两种路径: 1. **验证锁(Access Control Lock)** 这种方式不修改笔记的原始内容,而是通过插件在访问路径上设置一个“锁”。插件的逻辑是: **配置受保护路径**:用户在插件设置中指定需要加密的目录(例如“/Private”)。 **拦截访问**:插件监听文件打开事件。当用户尝试打开“/Private”目录下的任何笔记时,插件会中断正常的打开流程。 **弹出验证**:插件弹出一个密码输入模态框(Modal)。 **验证并放行**:只有用户输入了正确的密码,插件才允许最终打开这篇笔记。 这种方式实现起来相对简单,对笔记库的兼容性好,但需要注意的是,**笔记文件本身仍然是明文存储在硬盘上的**。如果攻击者绕过 Obsidian 直接读取文件,内容会暴露。现有插件如 **Password Protection** 就采用了这种模式。 2. **透明加密(Transparent Encryption)** 这是更安全的方案,它会真正加密笔记文件的内容。其工作流程更复杂: **写入时加密**:当用户保存一篇位于加密目录下的笔记时,插件自动将明文内容通过加密算法(如 AES-256)加密后再存入磁盘。 **读取时解密**:当用户打开一篇加密笔记时,插件先将磁盘上的密文内容解密成明文,再呈现给用户编辑。 **密码管理**:加解密操作所需的密钥由用户设置的主密码推导而来。 这种方式安全性极高,即使直接获取了笔记文件,在没有密码的情况下也无法读取。它的实现难度和复杂度远高于第一种,需要妥善处理密钥管理、加密性能、与 Obsidian 各种功能(如搜索、反向链接)的兼容性等问题。 ### 🔒 重要考量与挑战 在决定开发或使用此类插件前,有一些关键点需要你认真考虑: - **安全与便利的平衡**:加密意味着一旦密码丢失,数据**将可能永久无法恢复**。你必须有一套可靠的密码备份机制。 - **技术可行性**:Obsidian 强大的插件系统为实现此类功能提供了技术基础。开发者可以利用其 API 监听事件、创建界面、操作文件内容。 - **数据恢复风险**:这是最大的挑战。**请务必定时备份你的笔记库原文件**,最好在启用任何加密功能之前进行完整备份。这样即使插件出现意外,也有回滚的余地。