Расшифровка архивов tar с помощью gpg -d, флаг -d не работает

Расшифровка архивов tar с помощью gpg -d, флаг -d не работает

Моя ОС — Ubuntu 20.04.2 lts.

Я создаю архив tar из каталога noup1, который содержит файлы и подпапки, с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, хотя во всех соответствующих руководствах предписывается расшифровывать архив tar с помощью , gpg -d <archive-name>а не gpg <archive-name>?

Возможно ли, что у меня отсутствуют какие-то пакеты или что-то не так с моей конфигурацией gpg?

решение1

согласностраницы руководствадля гпг,

Расшифровать файл, указанный в командной строке (или STDIN, если файл не указан) и записать его в STDOUT (или файл, указанный с помощью --output). Если расшифрованный файл подписан, подпись также проверяется. Эта команда отличается от операции по умолчанию, так как она никогда не записывает в имя файла, которое включено в файл, и отклоняет файлы, которые не начинаются с зашифрованного сообщения.

Итак, -d работал нормально, но он расшифровывал файл в STDOUT, поэтому вы и увидели кучу мусорного вывода. Это закодированные данные для вашего файла .tar, так что неудивительно, что это бессмыслица.

если вы хотите, чтобы он расшифровывался в файл, а не в выходной поток оболочки, используйте --output <filename>или перенаправьте вывод в файл.

Я полагаю (я не умею читать по-немецки), что когда вы запустили команду в файле, я предполагаю, что она выполнила эквивалент

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

Связанный контент