10

长话短说,我的问题是:如何强制 GnuPG 在加密/解密文件时使用哪个私钥/公钥?


一些解释/长篇大论

我有一个应用程序必须在将文件发送到 S3 之前对其进行加密。

用户可以使用他们的浏览器从我的网站下载他们的文件,在这种情况下,我必须在提供文件之前先解密文件。

客户端(delphi 2010):我很可能会选择OpenPGPBlackbox

服务器端(PHP 5),我需要弄清楚如何使用非交互式命令加密/解密文件。

我在我的服务器上安装了 GnuPG,尝试了以下代码:

clear_file='/full/path/my-file.zip'
encrypted_file='/full/path/my-file.zip.pgp'

# Encrypt file
/usr/bin/gpg2 --encrypt "$clear_file"

# Decrypt file
/usr/bin/gpg2 --decrypt "$encrypted_file"

但似乎我无法在命令行中指定要使用哪些键。

每个用户都有自己的公钥/私钥,所以我需要能够指定使用哪个密钥来加密/解密相关文件。

我的问题是:如何强制 GnuPG 在加密/解密文件时使用哪个私钥/公钥?

4

1 回答 1

8

您正在寻找的选项是:

--default-key $name$
          Use $name$ as the default key to sign with. If this option is not used, the default key is
          the first key found in the secret keyring.  Note that -u or --local-user overrides  this
          option.
--local-user $name$
   -u     Use  $name$  as  the  key  to sign with. Note that this option overrides --default-key.

或者可能:

--recipient $name$
   -r     Encrypt for user id $name$. If this option or --hidden-recipient is not specified, 
          GnuPG asks for the  user-id unless --default-recipient is given.
--default-recipient $name$
          Use  $name$  as default recipient if option --recipient is not used and don't ask if 
          this  is a  valid  one. $name$ must be non-empty.

这些可用于指定谁是预期的接收者,例如用于签名/加密的公钥。解密文件时,如果当前密钥环中存在 GnuPG 会自动选择正确的密钥--keyring,如果存在多个,可以通过选项进行选择。GnuPG 也可以配置为从密钥服务器获取必要的密钥,如果它们在那里可用的话。

您可能还对--batch确保在执行期间不询问交互式问题的选项感兴趣。

我建议您通读 GnuPG 手册页。有很多选项可能时不时有用。

于 2012-07-02T12:18:17.400 回答