web-dev-qa-db-ja.com

ファイル名を暗号化してディレクトリを圧縮する方法は?

コマンドラインを使用すると、次のコマンドでディレクトリを暗号化できることがわかります。

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

ただし、ファイル名自体は暗号化されません。誰かが走った場合:

unzip Directory.Zip

誤ったパスワードを繰り返し入力すると、unzipコマンドは、正しいパスワードが入力されるまで、含まれているすべてのファイル名をループします。出力例:

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

等々。

コマンドラインを使用して、ファイル名自体を暗号化または非表示にしながら、暗号化でディレクトリを圧縮する方法はありますか?

ありがとうございました。

18

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ファイルを圧縮するように指示すると、全体的に圧縮率が向上します。

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

お気に入りのツールを使用してアーカイブを作成し、bcryptを使用して暗号化/復号化を実行できます。

A)暗号化されたファイルを作成するには:

tar -czf Directory.tgz /path/to/directory
bcrypt Directory.tgz

これにより、Blowfishで暗号化されたファイルDirectory.tgz

B)このプロセスを元に戻すには:

bcrypt Directory.tgz.bfe
tar -xf Directory.tgz
3
Jedi