使用外部密钥解密加密的gpg文件

Moh*_*naq 10 encryption gnupg

我使用加密文件gpg,现在我想解密文件.

有没有办法解密文件而无需导入秘密文件?

我们在一个名为的文件中有密钥key.sec; 我们可以将秘密文件传递gpg给参数(当我们从命令行运行decrypt命令bash时)在解密加密文件时使用吗?或者我们必须导入密钥然后解密加密文件?

sar*_*old 11

您必须将密钥添加到密钥环.从gpg(1)文档:

   --no-default-keyring
          Do not add the default keyrings to the list of
          keyrings. Note that GnuPG will not operate without any
          keyrings, so if you use this option and do not provide
          alternate keyrings via --keyring or --secret-keyring,
          then GnuPG will still use the default public or secret
          keyrings.
Run Code Online (Sandbox Code Playgroud)

您可以--import --no-default-keyring --secret-keyring temporary导入密钥,--secret-keyring temporary在解密内容时使用,然后~/.gnupg/temporary.gpg在完成后删除文件.但这只是一种解决方法.

  • @owl:我从未深入研究过GPG,以确定一个单独的钥匙是否是一个钥匙圈,但我会感到惊讶; 句子_注意GnuPG在没有任何密钥环的情况下不会运行感觉就像一个模糊的陈述,单独的密钥是_not_ keyrings. (2认同)
  • 请注意,`--secret-keyring` 已过时,并且在 GnuPG 2.1 中是无操作的。没有_秘密密钥环_ - 私钥存储在由“gpg-agent”拥有和操作的目录“private-keys-v1.d”中。 (2认同)

sta*_*fry 6

您必须导入密钥才能使用它,但是GnuPG 2.x版管理密钥的方式已更改。有一个gpg-agent处理秘密密钥访问的守护程序,从2.1版本开始必须使用它。

您可以通过以下方法快速创建临时密钥环,以使用文件中包含的密钥进行解密:

$ mkdir -m 700 ~/.gnupg-temp
$ gpg --homedir .gnupg-temp --import key.sec
$ gpg --homedir .gnupg-temp -d an_ecrypted_file
Run Code Online (Sandbox Code Playgroud)

如果之后要清理,请停止代理并删除目录:

$ gpg-connect-agent --homedir .gnupg-temp KILLAGENT /bye
$ rm -r ~/.gnupg-temp
Run Code Online (Sandbox Code Playgroud)

--secret-keyring关于2.1版的文档,过去曾经有一个选项可以这样说:

这是一个过时的选项,将被忽略。所有秘密密钥都存储在GnuPG主目录下的private-keys-v1.d目录中。

private-keys-v1.d目录(wthin的--homedir~/.gnupg)是拥有和由代理操作。