hsingko


为 Denote 添加 age 加密支持

我喜欢用 Emacs 配合 Denote 记录各种各样的信息,这时数据安全就不得不纳入考虑范围了。因为我的电子笔记中记录了很多敏感数据,比如银行卡信息、家里各种电子设备的信息等等,用明文存储的话太缺乏安全感了。

Emacs 内置了对 gpg 加密的支持,可惜使用门槛太高,之前 EasyPG 还出了 bug ,有导致数据丢失的风险。最近 age 加密成了新的潮流,使用起来可比 gpg 方便多了。

得益于 Denote 灵活的扩展性以及详细的文档,为 Denote 添加 age 加密支持非常简单。当你执行 M-x denote-type 时会提示选择笔记的格式,默认支持 org, markdown 和纯文本,这些文件类型存储在 denote-file-types 这个变量中,你可以通过 M-x describe-variable 查看。

现在我想要让我的 org 文件以 .org.age 扩展名存储,这样在配置了 age.el 之后, Emacs 就能自动实现对相关文件的加密和解密。参考 denote-file-typesorg 文件的写法,可以有如下代码:

(add-to-list 'denote-file-types
	       '(age
		 :extension ".org.age"
		 :date-function denote-date-org-timestamp
		 :front-matter denote-org-front-matter
		 :title-key-regexp "^#\\+title\\s-*:"
		 :title-value-function identity
		 :title-value-reverse-function denote-trim-whitespace
		 :keywords-key-regexp "^#\\+filetags\\s-*:"
		 :keywords-value-function denote-format-keywords-for-org-front-matter
		 :keywords-value-reverse-function denote-extract-keywords-from-front-matter
		 :link denote-org-link-format
		 :link-in-context-regexp denote-org-link-in-context-regexp))

这样如果今后我想要创建加密笔记,只要执行 M-x denote-type 并选择 age 类型就可以了。如果不喜欢 org 格式,你也可以参考这个方法配置 .md.age 或者 .txt.age

需要解决的问题

  • 如果使用了加密笔记,那么 consult-notes 的效率就会变得很低