gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:24:54 25 4
gpt4 key购买 nike

背景:

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

运行 gpg ~/.secrets/.mysecret.gpg 解密 .mysecret.gpg 并将其保存到文件 .mysecret ( Not Acceptable )。运行 gpg -d ~/.secrets/.mysecret.gpg 仅打印解密的 secret (感谢 JustinC)。

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

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

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

问题:

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

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

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

对于第 3 季度,类似于:

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

代替:

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

最佳答案

再次感谢@JustinC,感谢您的回答。

为了完整起见,这是我仅在内存中加密/解密字符串的解决方案:

加密:

# notice the space before echo here
# it is the default $HISTIGNORE flag which can be set in the ~/.bashrc
# it keeps this line from being written to the ~/.bash_history file

echo -n 'your secrets here' | gpg -c > ~/.secrets/.mysecret.gpg

# Enter passphrase:

解密:

# 2> /dev/null: skip printing strerr

gpg -d ~/.secrets/.mysecrets.gpg 2> /dev/null

注意:如果您收到错误“inappropriate ioctl for device”,您可能正在 WSL 上运行,这可能对您有帮助:

# https://d.sb/2016/11/gpg-inappropriate-ioctl-for-device-errors

echo -e "use-agent\npinentry-mode loopback" >> ~/.gnupg/gpg.conf
echo "allow-loopback-pinentry" >> ~/.gnupg/gpg-agent.conf
echo RELOADAGENT | gpg-connect-agent

关于unix - GPG仅在内存中解密/加密字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65836629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com