Я искал несколько дней, но пока не повезло. Возможно я ищу с плохими ключевыми словами.

Мне нужно использовать GPG для расшифровки зашифрованного файла в памяти, без записи расшифрованного содержимого на диск.

Стороннее программное обеспечение будет вызывать оболочку сценария, предоставляющую зашифрованное содержимое в качестве стандартного stdin а ключевую фразу в качестве параметра. Только для целей тестирования, я прочитал переменную оболочки

read pass

Затем я набрал свой пароль.

echo $pass | gpg  --passphrase-fd 0 --no-comment -q --no-verbose --decrypt fichier.chiffre.armor.gpg

это дает

You need a passphrase to unlock the secret key for
user: "Myself <fake@gpg-test.com>"
2048-bit RSA key, ID 5F65F788, created 2019-02-22 (main key ID C7E00AC4)

message secret

Я хочу получить только message secret , а не предыдущий текст, связанный с расшифровкой.

Если я позвоню echo $pass | gpg --passphrase-fd 0 --no-comment -q --no-verbose --output decrypted.txt --decrypt fichier.chiffre.armor.gpg файл decrypted.txt содержит только message secret

Я пытался использовать /dev/stdout качестве параметра - -output , но это был сбой.

echo $pass | gpg  --passphrase-fd 0 --no-comment -q --no-verbose --output /dev/stdout --decrypt fichier.chiffre.armor.gpg


You need a passphrase to unlock the secret key for
user: "Myself <fake@gpg-test.com>"
2048-bit RSA key, ID 5F65F788, created 2019-02-22 (main key ID C7E00AC4)

File `/dev/stdout' exists. Overwrite? (y/N)

Любая идея о том, как это использовать только GPG?

Спасибо Себастьен

2 ответа2

0

Мой gpg, похоже, не выводит информационные сообщения, похожие на ваши, особенно с -q , но в любом случае, если, как вы говорите, единственная проблема в том, что вы получаете дополнительные сообщения из stderr, вы можете устранить их (перенаправив stderr в /dev /null), добавив это к вашей команде:

2>/dev/null

И вы можете вернуться к использованию stdout, и вам не нужно беспокоиться о безопасном удалении любых временных файлов, содержащих расшифрованную информацию.


[Кроме того, --pinentry-mode loopback может быть полезен для избежания некоторых подсказок]

0

на самом деле часть

You need a passphrase to unlock the secret key for
user: "Myself <fake@gpg-test.com>"
2048-bit RSA key, ID 5F65F788, created 2019-02-22 (main key ID C7E00AC4)

не написано на стандартный stdout .

При отправке исходной команды sed 1,5d надежде удалить первые 5 строк, она просто удалила текстовое сообщение.

перенаправив вывод в файл, мы получили то, что нам нужно:

myself@myhost:~/gpg$ echo $pass | gpg  --passphrase-fd 0 --no-comment -q --no-verbose --decrypt fichier.chiffre.armor.gpg > toto.txt


You need a passphrase to unlock the secret key for
user: "Myself <fake@gpg-test.com>"
2048-bit RSA key, ID 5F65F788, created 2019-02-22 (main key ID C7E00AC4)

myself@myhost:~/gpg$ cat toto.txt
message secret

Я перепутал стандартный stdout с тем, что написано на экране.

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