Fifos和互动命令(gpg)

时间:2014-08-25 20:36:29

标签: linux bash fifo gnupg

要在更大的脚本中使用,我尝试将fifo与gpg一起使用。首先,我有一个加密文件secrets.txt.gpg

me@box:~$ touch secrets.txt
me@box:~$ echo 'first secret' > secrets.txt
me@box:~$ gpg -c secrets.txt

并输入两次短密码短语(' easy')。

现在我想解密秘密文件,添加一个元素并对结果做一些事情。为了保持简单,我只是例如。想要cat结果。尝试

me@box:~$ mkfifo fifo
me@box:~$ gpg -d secrets.txt.gpg > fifo &
[5] 9405
me@box:~$ echo 'second secret' > fifo &
[5] 9405
me@box:~$ cat < fifo
gpg: CAST5 encrypted data
second secret
Ctrl-C之前,

使shell无法响应。我试过过程替换给出了

 me@box:~$ cat <(gpg -d secrets.txt.gpg) <(echo 'second secret') > fifo &
 [7] 9422
 me@box:~$ gpg: CAST5 encrypted data
 Enter passphrase: easy
 bash: easy: command not found
 me@box:~$ 

如何在gpg -d解密后将输出写入管道,添加条目并稍后加密到光盘?

1 个答案:

答案 0 :(得分:0)

gpg在输出解密文件之前需要密码。在第一个例子中,

gpg -d secrets.txt.gpg > fifo &

该过程在后台运行,因此无法从用户那里获得密码。我找到了

gpg --passphrase easy -d secrets.txt.gpg > fifo &

echo easy | gpg --passphrase-fd 0 -d secrets.txt.gpg > fifo &

会从cat <fifo提供以下输出:

gpg: CAST5 encrypted data
gpg: encrypted with 1 passphrase
gpg: first secret
WARNING: message was not integrity protected