Как защитить паролем файлы gzip в командной строке?

Я хочу создать некоторые файлы tar.gz (и, возможно, tar.bz2), используя команду tar в Ubuntu 10.04.

Я хочу защитить файл паролем.

Какова команда, чтобы сделать это (я гуглил, но не нашел ничего, что показывает, как создавать и извлекать сжатые файлы, используя пароль).

Кто-нибудь знает, как это сделать?

6 ответов

Решение

Вы должны применить Unix-философию для этой задачи: один инструмент для каждой задачи.

tarring и сжатие - это работа для tar а также gzip или же bzip2, крипто-это работа для любого gpg или же openssl:

шифровать

 % tar cz folder_to_encrypt | \
      openssl enc -aes-256-cbc -e > out.tar.gz.enc

расшифровывать

 % openssl enc -aes-256-cbc -d -in out.tar.gz.enc | tar xz

Или используя gpg

 % gpg --encrypt out.tar.gz

вариант openssl использует симметричное шифрование, вам нужно будет сообщить получающей стороне об использованном "пароле" (он же "ключ"). gpg-вариант использует комбинацию симметричного и асимметричного шифрования, вы используете ключ принимающей стороны (что означает, что вам не нужно сообщать никому какой-либо пароль), чтобы создать ключ сеанса и зашифровать содержимое с этим ключом.

если вы идете по zip (или 7z) маршруту: по сути, это то же самое, что и openssl-вариант, вы должны сообщить принимающей стороне о пароле.

Если вы хотите просто защитить файлы паролем, используйте утилиту hand zip через командную строку

zip -e <file_name>.zip <list_of_files>

-e просит утилиту zip зашифровать файлы, указанные в

Рабочий пример:

$ touch file_{0,1}.txt # creates blank files file_0 & file_1    
$ zip -e file.zip file_* # ask zip to encrypt
$ ENTER PASSWORD:
$ VERIFY PASSWORD:
$ ls file*

Вот несколько способов сделать это. Следует отметить, что если вы собираетесь использовать отдельные инструменты сжатия и шифрования, вы всегда должны сжимать их перед шифрованием, поскольку зашифрованные данные практически не сжимаются.

Эти примеры сжимают и шифруют файл с именем clear_text,

С помощью gpg

$ gpg -c clear_text #Compress & Encrypt
$ gpg -d clear_text.gpg #Decrypt & Decompress

gpg сожмет входной файл перед шифрованием по умолчанию, -c означает использовать симметричное шифрование с паролем. Выходной файл будет clear_text.gpg, Одно из преимуществ использования gpg Он использует стандартные форматы OpenPGP, поэтому любое программное обеспечение для шифрования, которое поддерживает OpenPGP, сможет расшифровать его.

С помощью mcrypt

$ mcrypt -z clear_text #Compress & Encrypt
$ mdecrypt -z clear_text.gz.nc #Decrypt & Decompress

-z Вариант компрессов. По умолчанию это выводит файл с именем clear_text.gz.nc,

С помощью bcrypt

$ bcrypt -r clear_text #Compress & Encrypt
$ bcrypt -r clear_text.bfe #Decrypt & Decompress

bcrypt сжимает перед шифрованием по умолчанию, -r опция такова, что входной файл не удаляется в процессе. Выходной файл называется clear_text.bfe по умолчанию.

С помощью gzip а также aespipe

$ cat clear_text | gzip | aespipe > clear_text.gz.aes #Compress & Encrypt
$ cat clear_text.gz.aes | aespipe -d | gunzip > clear_text #Decrypt & Decompress

aespipe - это то, на что это похоже, программа, которая принимает данные на stdin и выводит зашифрованные данные на stdout. Он не поддерживает сжатие, поэтому вы можете сначала направить ввод через gzip. Поскольку вывод идет в стандартный вывод, вам придется перенаправить его в файл с именем по вашему выбору. Вероятно, не самый эффективный способ сделать то, что вы просите, но aespipe - это универсальный инструмент, поэтому я подумал, что стоит упомянуть.

Вы можете использовать 7zip для создания архива, защищенного паролем. Вы можете указать пароль в командной строке (или в скрипте) следующим образом:

7z a -p<password> <someprotectedfile>.7z file1.txt file2.txt

7zip также может читать из STDIN следующим образом:

cat <somefile> | 7z a -si -p<password> <someprotectedfile>.7z

Если необходимо использовать zip-файлы, вы можете поиграть с -t<type> параметр (например, -tzip).

Ни tar, ни gzip, ни bzip2 не поддерживают защиту паролем. Либо используйте такой формат сжатия, как zip, либо зашифруйте его с помощью другого инструмента, такого как GnuPG.

Создать с помощью:

tar czvf - directory | gpg --symmetric --cipher-algo aes256 -o passwordprotectedarchive.tar.gz.gpg

Он попросит вас ввести пароль.

Расшифровать с помощью:

gpg -d passwordprotectedarchive.tar.gz.gpg | tar xzvf -

С участием zip и unzip

Помня о проблемах безопасности защищенных паролем zip-файлов, вот как зашифровать каталог и файл с помощью zip:

zip -r --encrypt archive.zip a_directory a_file

Вам будет предложено ввести пароль.

Чтобы расшифровать файлы, вы можете использовать unzip:

unzip archive.zip

или же bsdtar:

bsdtar -xf archive.zip
Другие вопросы по тегам