在命令行上使用 GnuPG 加密文件永远挂起

Encrypting file using GnuPG on command line hangs forever

我想用 GnuPG 加密一个文件

    gpg2 --homedir=~/.gnupg --always-trust=true --recipient="BlahBlah" --encrypt=/path/to/file --output=/path/to/output_file

然而这个命令似乎永远挂起,永远不会 return。有趣的是,在我中断进程后,确实有 /path/to/output_file created ,但是写入的字节比原始有效载荷大得多(例如我的 /path/to/file 只有 5 个字节,但结果有将近 200字节写入 /path/to/output_file).

肯定有问题,但我实在想不通。

我已经预先通过 gpg --import key.asc 导入了 BlahBlah 的密钥。 GnuPG 1 和 GnuPG 2 都会发生这种情况。

您应用 --encrypt 的方式有误。 --encrypt 不需要任何参数,要处理的文件作为最后一个参数传递。此外,按照文档,您应该传递 --output /path/to/output_file 而不是 --output=/path/to/output_file。最后,GnuPG区分选项和命令,选项应该在命令之前。

您观察到 GnuPG 开始写入头信息,但随后等待来自 STDIN 的输入(直到被中断)。

您要查找的 GnuPG 命令行是

gpg2 --homedir=~/.gnupg --always-trust=true --recipient="BlahBlah" --output /path/to/output_file --encrypt /path/to/file

最后一个提示:--always-trust=true 和通过用户 ID 解析收件人的组合是一个非常糟糕的主意,因为可能会使用本地密钥环中具有相同用户 ID 的任何其他密钥。相反,传递完整密钥的指纹,它专门选择一个不同的密钥 (using short key IDs is not secure, either)。