![使用不同的公钥解密文件](https://linux22.com/image/1508693/%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%90%8C%E7%9A%84%E5%85%AC%E9%92%A5%E8%A7%A3%E5%AF%86%E6%96%87%E4%BB%B6.png)
我们使用 GnuPG 来保护文件,在解密或加密文件时没有遇到任何问题。但是,我们有另一个从另一个客户端(我们将其称为 CompanyB)导入的公钥,我们需要使用他们的公钥(公钥 B)解密他们发送的文件。
如何在命令行中指定使用特定的公钥来解密来自 CompanyB 的文件?
>gpg --list-keys
/.../.../gnupg/pubring.gpg
-----------------------------------------------------
pub 2048R/A3116C78 2016-06-28
uid [ultimate] CompanyA <[email protected]>
sub 2048R/27160116 2016-06-28
pub 2048R/678434E4 2016-08-29
uid [ultimate] CompanyB <[email protected]>
sub 2048R/DE4D3F7E 2016-08-29
我们需要使用 CompanyB 的证书来解密 CompanyB 的文件。
答案1
您混淆了公钥/私钥加密的几个概念或术语。公钥和私钥总是一起出现(因此,它们通常被称为公钥-私钥对)。公钥会发布给想要向您发送加密信息的人,而私钥则保密,可用于再次解密消息。
你不能用任何密钥来解密消息,只能用属于公钥的私钥。这是公钥/私钥加密的最核心概念。
如果消息是为“CompanyB”加密的,则需要“CompanyB”的私钥才能解密该消息。如果您没有私钥,则无法解密;如果仅通过公钥/证书(这些术语通常混合使用,用于描述相关但不相等的对象)就可以解密,则加密将毫无用处。要求发件人加密你的公钥,或者询问公司B为您解密消息。
关于如何使用 GnuPG 选择密钥:只需导入密钥(gpg --import
),GnuPG 将自动选择正确的密钥。通常,所需的密钥存储在加密消息的标头中,否则 GnuPG 将尝试所有私钥。