Шифрование файла с помощью GnuPG в командной строке зависает навсегда

Есть один файл, который я хочу зашифровать с помощью GnuPG.

    gpg2 --homedir=~/.gnupg --always-trust=true --recipient="BlahBlah" --encrypt=/path/to/file --output=/path/to/output_file

Однако эта команда, кажется, зависает навсегда и никогда не возвращается. Интересно, что после того, как я прерываю процесс, действительно создается /path/to/output_file, однако байты, записанные туда, намного больше, чем необработанная полезная нагрузка (например, мой /path/to/file состоит всего из 5 байтов, но оказывается, что в /path/to/output_file записано почти 200 байтов).

Должно быть что-то не так, но я действительно не мог понять, что именно.

Я заранее импортировал ключ для BlahBlah на gpg --import key.asc. Это происходит как для GnuPG 1, так и для GnuPG 2.


person Xinwei Liu    schedule 12.04.2016    source источник


Ответы (1)


Вы применяете --encrypt неправильным образом. --encrypt не ожидает каких-либо параметров, файлы, над которыми нужно работать, передаются как самые последние аргументы. Кроме того, следуя документации, вы должны передать --output /path/to/output_file вместо --output=/path/to/output_file. Наконец, GnuPG различает параметры и команды, а параметры должны предшествовать командам.

Вы видите, что GnuPG начинает записывать информацию заголовка, но затем ожидает ввода от STDIN (пока не будет прервано).

Командная строка GnuPG, которую вы ищете,

gpg2 --homedir=~/.gnupg --always-trust=true --recipient="BlahBlah" --output /path/to/output_file --encrypt /path/to/file

И последний совет: сочетание --always-trust=true и разрешения получателя по идентификатору пользователя — очень плохая идея, так как может использоваться любой другой ключ с таким же идентификатором пользователя в локальной связке ключей. Вместо этого передайте отпечаток полного ключа, который специально выбирает отдельный ключ (использование идентификаторов коротких ключей также небезопасно) .

person Jens Erat    schedule 12.04.2016