GPG 仅在内存中解密/加密字符串

问题描述

背景:

我有一个 GPG 加密的机密,不得将其写入未加密的文件。 假设它位于 ~/.secrets/.mysecret.gpg

运行 gpg ~/.secrets/.mysecret.gpg 会解密 .mysecret.gpg 并将其保存到文件 .mysecret(不可接受)。运行 gpg -d ~/.secrets/.mysecret.gpg 仅打印解密的机密(谢谢JustinC)。

为了避免stderr并将其编码为base64以供我使用,我编写了这个shell函数作为一种方便的方法:

keyreader() {
  local gpg_file=$1
  echo -n "$(gpg -d "$gpg_file" 2> /dev/null)" | base64
}

运行keyreader ~/.secrets/.mysecret.gpg,输入加密secret的密码后,打印出base64编码的解密secret,无输出文件。

问题:

  1. 运行 gpg -d ~/.secrets/.mysecret.gpg 时,gpg 是否会写入包含未加密的 .mysecret 的 tmp 文件?

  2. 当我使用上述语法时,为什么gpg不输出文件.mysecret? (答案:使用了 -d 标志,再次感谢 JustinC)。

  3. 假设我在运行命令之前使用了适当的 $HISTIGNORE 标识符,如何在不先将其未加密的情况下写入文件的情况下将命令行中的字符串加密为 .gpg AES256 加密文件?>

对于第 3 季度,类似于:

$ echo "secret info" | gpg --cipher-algo AES265 -c -o secrets_file.txt.gpg

代替:

$gpg --cipher-algo AES265 -c secrets_file.txt

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)