使用 gpg -d 解密 tar 檔案,-d 標誌不起作用

使用 gpg -d 解密 tar 檔案,-d 標誌不起作用

我的作業系統是 Ubuntu 20.04.2 lts。

我正在從 dir 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 指定的檔案)。如果解密的檔案已簽名,則簽名也會被驗證。此命令與預設操作不同,因為它從不寫入檔案中包含的檔案名,並且拒絕不以加密訊息開頭的檔案。

so -d 工作正常,但它正在將檔案解密到 STDOUT,這就是為什麼您看到一堆垃圾輸出。這是 .tar 檔案的編碼數據,所以它是亂碼也就不足為奇了。

如果您希望它解密到檔案而不是 shell 輸出流,請使用輸出--output <filename>或將輸出重新導向到檔案。

我相信(我看不懂德語)當您在文件上運行命令時,我認為它運行的相當於

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

相關內容