Я использую приведенную ниже команду для шифрования строки в файл, но она всегда завершается ошибкой с сообщением об ошибке «gpg --encrypt needs input».

gpg.exe --batch --passphrase-fd 0 --armor --sign --recipient test@email.com --homedir "c:\gnupg" --encrypt 1 > "test.gpg"

Есть идеи?

1 ответ1

1

GnuPG всегда ожидает ввода из файла или из STDIN. Чтобы передать строку в STDIN, используйте ECHO в системах Windows или echo в системах Unix и отправьте в gpg:

ECHO 1 | gpg [other options] --encrypt
echo 1 | gpg [other options] --encrypt

Поскольку вы уже ожидаете парольную фразу от файлового дескриптора 0 (который является STDIN), вам придется либо

  • предоставить любую парольную фразу и данные для подписи из другого места
  • pipe в обеих строках, разделенных символом новой строки, что легко сделать с помощью sh/bash в системах unix (echo -e "passphrase\ndata" | gpg --sign --encrypt), но для Windows требуется довольно хакерское решение (Я не слишком знаком с командной строкой Windows, но, вероятно, вам придется выбрать одно из решений с помощью одной команды ECHO).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .