Emacs 和 EasyPG 不执行公钥加密

信息安全 加密 pgp
2021-08-18 21:51:47

我有一个文件,我按照本指南对其进行编辑和加密。就安全性而言,我是个菜鸟,并认为包含指定要使用的加密密钥的行的意义

-*- mode: org -*- -*- epa-file-encrypt-to: ("my_key_email@foo.org") -*- 

因此将要求我(由我的电子邮件指定)输入我的密码。但是,似乎我做错了,因为我改为使用对称加密。我知道我正在做对称加密,因为我从未被提示输入 my_key_email@foo.org 的密码。我可以在 emacs 中列出密钥,当我“Mx epa-list-keys”时,我的电子邮件会显示在列表中

有人可以指出我哪里出错了,以便我可以使用我的密码来加密文件吗?我想通过意外地用新密码加密文件来防止自己被锁定,可悲的是,这种情况发生了。:( 从我目前所读到的内容来看,破解文件几乎是不可能的。

为了完整起见,这是我的 .emacs 文件

(require 'whitespace)
(setq whitespace-style (quote (spaces tabs newline space-mark tab-mark newline-mark)))

;; EasyPG
(require 'epa)
(epa-file-enable)

(defadvice epg--start (around advice-epg-disable-agent disable)
"Make epg--start not able to find a gpg-agent"
(let ((agent (getenv "GPG_AGENT_INFO")))
(setenv "GPG_AGENT_INFO" nil)
ad-do-it
(setenv "GPG_AGENT_INFO" agent)))
;;(setenv "GPG_AGENT_INFO" pinentry)))

(defun epg-disable-agent ()
  "Make EasyPG bypass any gpg-agent"
  (interactive)
  (ad-enable-advice 'epg--start 'around 'advice-epg-disable-agent)
  (ad-activate 'epg--start)
  (message "EasyPG gpg-agent bypassed"))

(defun epg-enable-agent ()
  "Make EasyPG use a gpg-agent after having been disabled with epg-disable-agent"
  (interactive)
  (ad-disable-advice 'epg--start 'around 'advice-epg-disable-agent)
  (ad-activate 'epg--start)
  (message "EasyPG gpg-agent re-enabled"))

;;added to overcome bug in gnupg2 in Arch linux as pointed out here: http://www.emacswiki.org/emacs/EasyPG
(when (file-executable-p "/usr/bin/gpg1")
(setq epg-gpg-program "/usr/bin/gpg1"))
`
1个回答

您似乎已经在进行公钥加密。

在公钥加密中,数据用公钥加密,用私钥解密。密码仅用于保护私钥。公钥是公开的,任何人都可以使用,因此加密时不要求您输入密码是正常的。

感谢William Hay,他在对原始问题的评论中提出了这个和另一个可能的解释。