我的作業系統是 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 -
所以我想知道:
是什麼 ”猜測的命令「就這樣被處死了?
為什麼該-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