使用 gpg -d 解密 tar 档案时,-d 标志不起作用

使用 gpg -d 解密 tar 档案时,-d 标志不起作用

我的操作系统是 Ubuntu 20.04.2 lts。

我正在从目录 noup1 创建一个 tar 存档,其中包含文件和子文件夹,tar cf no1.tar noup1

用 加密gpg -c no1.tar。现在我有了一个no1.tar.gpg档案。

如果我尝试用 解密它gpg -d no1.tar.gpg,我会在终端中看到很多波浪线字符,而且它不起作用。

如果我只是使用gpg no1.tar.gpg而不使用-d标志,我会得到一个输出,提示“没有给出命令。试着猜测......”

gpg: WARNING: Kein Kommando angegeben. Versuche zu raten was gemeint ist ... gpg: AES256 verschlüsselte Daten gpg: Verschlüsselt mit einer Passphrase

现在档案已解密。一切正常!但如何以及为什么

另一方面,如果我使用-d标志并将结果导入 tar,它就会成功!

gpg -d no1.tar.gpg | tar xf -

如何使用 tar 和 gpg 创建压缩加密档案

所以我想知道:

是什么 ”猜测命令“ 被处决了?

为什么该-d标志不起作用,但如果通过管道传输到 tar 中则可以起作用,即使所有相关教程都指示使用gpg -d <archive-name>而不是解密 tar 档案gpg <archive-name>

是否可能我缺少一些包或者我的 gpg 配置有问题?

答案1

根据手册页对于 gpg,

-d

解密命令行中给出的文件(如果未指定文件,则解密为 STDIN)并将其写入 STDOUT(或使用 --output 指定的文件)。如果解密的文件已签名,则还会验证签名。此命令与默认操作不同,因为它从不写入文件中包含的文件名,并且它会拒绝不以加密消息开头的文件。

因此 -d 工作正常,但它正在将文件解密到 STDOUT,这就是您看到一堆垃圾输出的原因。这是 .tar 文件的编码数据,因此它毫无意义。

如果您希望将其解密为文件而不是 shell 输出流,请使用--output <filename>或将输出重定向到文件。

我相信(我看不懂德语)当你在文件上运行命令时,我认为它运行了相当于

gpg -d no1.tar.gpg --output no1.tar

相关内容