Command-Line

如何使用文件名加密壓縮目錄?

  • November 19, 2019

使用命令行,我知道我可以使用以下命令加密目錄:

zip -er Directory.zip /path/to/directory

但是,這不會加密文件名本身。如果有人跑:

unzip Directory.zip

並且反复輸入錯誤的密碼,解壓縮命令將遍歷所有包含的文件名,直到輸入正確的密碼。樣本輸出:

unzip Directory.zip 
Archive:  Directory.zip
  creating: Directory/
[Directory.zip] Directory/sensitive-file-name-1 password: 
password incorrect--reenter: 
password incorrect--reenter: 
  skipping: Directory/sensitive-file-name-1  incorrect password
[Directory.zip] Directory/sensitive-file-name-2 password: 
password incorrect--reenter: 
password incorrect--reenter: 
  skipping: Directory/sensitive-file-name-2  incorrect password
[Directory.zip] Directory/sensitive-file-name-3 password: 
password incorrect--reenter: 
password incorrect--reenter: 
  skipping: Directory/sensitive-file-name-3  incorrect password

等等。

使用命令行,有沒有辦法用加密壓縮目錄,同時也加密或隱藏文件名本身?

謝謝你。

在 zip 文件中,只有文件內容被加密。文件元數據(包括文件名)未加密。這是文件格式的限制:每個條目都單獨壓縮,如果加密,則單獨加密。

您可以改用7-zip。它支持元數據加密(-mhe=on使用 Linux 命令行實現)。

7z a -p -mhe=on Directory.7z /path/to/directory

所有主要作業系統和大多數次要作業系統都有 7zip 實現,但這可能需要安裝額外的軟體(IIRC Windows 現在可以解壓縮開箱即用的加密 zip 文件)。如果需要 7z 進行解密是一個問題,您只能依靠 zip,首先使用它將目錄打包到單個文件中,然後加密該文件。如果這樣做,請關閉單個文件的壓縮並指示外部 zip 壓縮 zip 文件,您將獲得更好的整體壓縮率。

zip -0 -r Directory.zip /path/to/directory
zip -e -n : encrypted.zip Directory.zip

引用自:https://unix.stackexchange.com/questions/289999