我想通过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上。
答案 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)。