我的任务是解释在我的批处理脚本之一中发生的 gpg 错误的变化。目前,当我对指定文件执行 gpg 解密时,它返回 2。问题是当我搜索表单时,它显示文件已被正确解密,但错误代码导致脚本停止,因为它只假设 0是唯一的成功价值。
gpg -o XXX --decrypt XXX.gpg
RETVAL=$?
if [ RETVAL -ne 0 ]; then
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
我在网上搜索并找到了 gpg 的标题列表。它将错误 2 定义为未知数据包。
显示的正常错误文本是 [gpg: [不知道]: invalid packet (ctb=14)]。未知数据包究竟是什么意思?我正在尝试搜索有关理解错误代码的任何文档。使用 [-vv] 选项显示所有详细信息后。我将生成的 gpg 文件解密与返回 0 代码的文件进行了比较。我唯一注意到的是密钥的字节不同。
没有错误的gpg的解密有以下日志:
:pubkey enc packet: version 3, algo 16, keyid <16-hexdigit>
data 1023 bits
data 1024 bits
Run Code Online (Sandbox Code Playgroud)
导致错误的gpg的解密有以下日志:
:pubkey enc packet: version 3, algo 16, keyid <16-hexdigit>
data 1022 bits
data 1022 bits
Run Code Online (Sandbox Code Playgroud)
这是什么意思?为什么即使密钥位不相同仍然可以正确解密?请注意,用于解密这两个文件的密钥 ID 和密码是相同的。另外,有没有人知道任何关于解释 gpg 错误的详细资源。
广泛使用的 GPF 代码分为三种类型:
识别错误的正确方法是解释 --status-fd 的输出。
现在对于您正在使用的特定问题,可能有两个原因:
要解决此问题,请提供以下开关:
--yes and --always-trust
Run Code Online (Sandbox Code Playgroud)
您可以通过使用 gpg 可写的目录指定 homedir 指令来解决该问题。像这样:
$cmd = "/usr/bin/gpg -a --recipient $to -e -o $outfile $infile --homedir /path/to/dir";
Run Code Online (Sandbox Code Playgroud)
来自 man gpg 的信息:
--homedir directory
Set the name of the home directory to directory
If this option is not used it defaults to "~/.gnupg". It does not make sense to use this in a options file. This also overrides the environment variable $GNUPGHOME.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19088 次 |
最近记录: |