Emacs

如何使用 Emacs 辨識並自動打開 ASCII 鎧裝格式的 GPG 加密文件?

  • April 14, 2016

gpg -ca passwords.txt創建加密的 ASCII 文件passwords.txt.asc。Emacs 將文件作為普通文本文件打開:

-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.0.19 (GNU/Linux)

jA0EAwMCkIp3+bQkLWJgyTQYLGVN8EUEG0BE42sEj/8PrnSzgviSiENxtK+/2n73
WXD7EtndVS/MX4lFJ96h8VozChUA
=zSwh
-----END PGP MESSAGE-----

如何讓 Emacs 在打開和保存文件時自動解密和加密文件?

一切都應該在預設配置下正​​常工作,但您可以檢查您的配置。

首先,您需要確保安裝了 EasyPG Assistant。

M-x``locate-library``RET``epa``RET應該返回類似:

庫是文件 /usr/local/share/emacs/24.2.50/lisp/epa.elc

如果沒有,那麼你必須安裝它。(或升級到 Emacs23 或 Emacs24)

  1. http://emacswiki.org/emacs/EasyPG
  2. http://epg.sourceforge.jp/

然後,檢查變數的值auto-mode-alistC-h``v``auto-mode-alist``RET蒐索epa

如果找不到,請將此程式碼段添加到您的.emacs.

(add-to-list 'auto-mode-alist '("\\.gpg\\(~\\|\\.~[0-9]+~\\)?\\'" nil epa-file))

我和原始海報有同樣的問題。我希望 EasyPG 將帶有 .asc 副檔名的文件保存為 ASCII 鎧裝密文,而不是二進製文件。回復中有一些很好的資訊,但沒有一個完整足以解決 OP 的問題。我想我用以下配置解決了它。

(epa-file-enable)

(setq epa-file-name-regexp "\\.\\(gpg\\|\\asc\\)\\(~\\|\\.~[0-9]+~\\)?\\'")
(epa-file-name-regexp-update)

;; Minor mode for ASCII-armored gpg-encrypted files
(define-minor-mode auto-encryption-armored-mode
 "Save files in encrypted, ASCII-armored format"
 ;; The initial value.
 nil
 ;; The indicator for the mode line.
 " Encrypted,Armored"
 ;; The minor mode bindings.
 nil
 (if (symbol-value auto-encryption-armored-mode)
     (set (make-local-variable 'epa-armor) t)
   (kill-local-variable 'epa-armor))
 )

(add-to-list 'auto-mode-alist '("\\.asc$" . auto-encryption-armored-mode))

首先,這會將 .asc 和 Emacs 備份名稱添加到 EasyPG 將保存為加密數據(預設為二進制)的文件副檔名。

然後它定義了一個次要模式,將 epa-armor 設置為緩衝區局部變數。受敏感模式啟發: http: //anirudhsasikumar.net/blog/2005.01.21.html

最後,它將次要模式設置為在打開 .asc 文件時自動啟動。TODO:打開 Emacs 備份文件時也啟動。

請注意,如果您不希望 .gpg 和 .asc 文件的明文副本作為 Emacs 備份浮動,那麼“額外的” epa-file-name-regexp 正則表達式語法至關重要。

到目前為止似乎工作正常。

這個問題相當陳舊,但在 Debian 8.3 上也沒有隨 EasyPG 和 Emacs 24 一起提供的簡單解決方案。希望有幫助。

引用自:https://unix.stackexchange.com/questions/55354