【问题标题】:Fifos and interactive command (gpg)Fifos 和交互式命令 (gpg)
【发布时间】:2014-08-26 07:29:19
【问题描述】:

为了在更大的脚本中使用,我尝试将 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 解密后将输出写入管道,添加条目并稍后加密到磁盘?

【问题讨论】:

    标签: linux bash fifo gnupg


    【解决方案1】:

    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 &lt;fifo 给出以下输出:

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

    【讨论】:

      猜你喜欢
      • 2021-09-16
      • 1970-01-01
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2014-05-08
      • 2011-02-26
      相关资源
      最近更新 更多