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

时间:2016-04-12 21:17:38

标签: encryption gnupg pgp openpgp

我想通过GnuPG加密一个文件

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

然而,这个命令似乎永远挂起,永远不会回来。有趣的是,在我中断进程后,确实创建了/path/to/output_file,但是那里写入的字节比原始有效负载大得多(例如我的/path/to/file只有5个字节,但事实证明有近200个字节写入/path/to/output_file)的字节。

一定有什么不对劲,但我真的无法弄清楚它是什么。

我已提前BlahBlah导入了gpg --import key.asc的密钥。它发生在GnuPG 1和GnuPG 2上。

1 个答案:

答案 0 :(得分:4)

您以错误的方式应用--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)。