我已经发送了一条装甲 pgp 加密消息,但从那时起,原始消息就丢失了。在同一系统上,用于加密消息的算法和密钥也应该可以反转以解密消息,对吗?我已经尝试过了gpg --decrypt pgpmessage.txt
,但gpg --decrypt --recipient recipient pgpmessage.txt
仍然出现错误。有可能吗?
答案1
gpg --encrypt
使用非对称加密:加密到一个或多个公钥,结果只能使用相应的私钥解密。要解密您的消息,您需要其中一位收件人的私钥;除非你自己加密它,否则你可能不会有这个。
答案2
如果您尚未创建也对自己加密的消息,则您将无法解密它。将来,您可以使用--encrypt-to
或--hidden-encrypt-to
。这些选项旨在与您自己的密钥 ID 一起使用,允许您另外加密发送给自己的消息。
--encrypt-to name
Same as --recipient but this one is intended for use in the op‐
tions file and may be used with your own user-id as an "encrypt-
to-self". These keys are only used when there are other recipi‐
ents given either by use of --recipient or by the asked user id.
No trust checking is performed for these user ids and even dis‐
abled keys can be used.
--hidden-encrypt-to name
Same as --hidden-recipient but this one is intended for use in
the options file and may be used with your own user-id as a hid‐
den "encrypt-to-self". These keys are only used when there are
other recipients given either by use of --recipient or by the
asked user id. No trust checking is performed for these user
ids and even disabled keys can be used.
您需要使用这些选项之一对其进行加密的原因是公钥加密的工作原理。为了使用给定的公钥加密消息,GnuPG 将生成一个随机对称加密密钥并使用它来加密消息(通常是 AES-CFB)。然后使用公钥填充 AES 密钥并对其进行加密。如果您希望有多个收件人,则使用不同的公钥再次加密相同的密钥并将其附加到消息中。因此,具有多个收件人的加密消息具有 AES 加密消息的单个副本,然后是 AES 密钥的多个副本,每个副本只能由一个收件人解密。
如果您不是这些收件人之一,则无法解密 AES 密钥,这意味着您无法解密该邮件。 GnuPG 不会在任何地方存储它生成的对称密钥的副本,因此一旦它被用来加密消息并且它本身对每个接收者都进行了加密,它就会被销毁。如果不访问收件人的私钥,您就无法取回它。