Я использую команду ниже для шифрования строки в файл, но она всегда завершается ошибкой с сообщением об ошибке «gpg --encrypt needs input».
gpg.exe --batch --passphrase-fd 0 --armor --sign --recipient [email protected] --homedir "c:\gnupg" --encrypt 1 > "test.gpg"
Есть идеи?
решение1
GnuPG всегда ожидает ввода из файла или из STDIN. Чтобы передать строку в STDIN, используйте ECHO
в системах Windows или echo
в системах Unix и передайте в gpg
:
ECHO 1 | gpg [other options] --encrypt
echo 1 | gpg [other options] --encrypt
Поскольку вы уже ожидаете парольную фразу из файлового дескриптора 0 (который является STDIN), вам придется либо
- предоставить любую парольную фразу и данные для подписи из другого места
- в обеих строках используется символ новой строки, разделенный символом «новая строка», что легко сделать с помощью
sh
/bash
в системах Unix (echo -e "passphrase\ndata" | gpg --sign --encrypt
), нотребуется довольно хакерское решение на Windows(Я не слишком хорошо знаком с командной строкой Windows, но, скорее всего, вам придется выбрать одно из решений с однойECHO
командой).