GPG总是在结果中返回2。我的代码如下
$cmd = "/usr/bin/gpg -a --recipient $to -e -o $outfile $infile";
其中outfile是加密数据将被写入的文件,infile是未加密的数据。
我不知道为什么会这样。任何人都可以告诉我有什么问题。感谢。
答案 0 :(得分:6)
GPG询问您是否要继续使用未签名密钥进行加密。由于没有用户可以输入Y
,因此会产生错误。
要解决这个问题,请使用以下开关
--yes
和--always-trust
答案 1 :(得分:3)
请参阅此邮件:http://lists.gnupg.org/pipermail/gnupg-users/2008-January/032410.html
这似乎是一个许可问题。 gpg正在尝试访问它无法访问的目录,因此它会因致命错误而失败。 (错误代码2)
您可以通过指定带有gpg可写目录的 homedir 指令来解决此问题。像这样:
$cmd = "/usr/bin/gpg -a --recipient $to -e -o $outfile $infile --homedir /path/to/dir";
来自man gpg
的信息:
- homedir目录
将主目录的名称设置为目录如果未使用此选项,则默认为 “〜/ .gnupg”。它没有意义 在选项文件中使用它。这也是 覆盖环境变量 $ GNUPGHOME。
答案 2 :(得分:2)
您还可能想要将密钥添加到可信密钥列表:
gpg.exe --edit-key KEY_NAME
trust
5 (level of trust)
Y
Save
我遇到了--always-trust
参数在XP窗口上无法正常运行的问题,这有助于我解决问题。
答案 3 :(得分:1)
我遇到了同样的问题,但对于解码命令
首先,您可以通过将stderr重定向到stdout来获取错误消息。
$cmd = "/usr/bin/gpg -a --recipient $to -e -o $outfile $infile 2>&1";
然后你可以修改gpg的参数以满足你的需要。因为我有一个用密码加密密码的文件,我不得不添加几个参数。
我从
开始gpg -o $out -d $path
但它抱怨说,它无法打开tty,然后使用--no-tty输出一些其他错误,最后用密码和密码解码文件的命令是
gpg --batch --passphrase $pass_phrase --no-tty -o $outfile -d $path_to_encoded_file
我希望这有助于某人。