如何使用 gpg 通过对称密码从 STDIN 进行加密?

如何使用 gpg 通过对称密码从 STDIN 进行加密?

我正在尝试STDIN使用加密数据gpg。我正在使用以下内容:

echo 'plaintext' | gpg -c -o output.gpg

然而,我看到了以下结果:

gpg: problem with the agent: Inappropriate ioctl for device
gpg: error creating passphrase: Operation cancelled
gpg: symmetric encryption of '[stdin]' failed: Operation cancelled

我该如何仅STDIN使用gpg和对称密码进行加密?我使用的是 MacOS 和GPG v2.2.13

答案1

许多人建议安装pinentry-mac,该软件包不由官方 GnuPG 团队维护。我不建议这么做。

~/.profile更安全的替代方法是按照建议将以下几行附加到官方文档(将它们附加到~/.bashrc对我来说不起作用)。

GPG_TTY=$(tty)
export GPG_TTY

添加这些行后,关闭终端,问题就解决了。

另外,请确保使用 将 gnupg 升级到最新版本brew upgrade gnupg

答案2

这是 pinentry(用于注册密码的实用程序)的问题。它安装在你的 Mac 上了吗?如果没有,请运行brew install pinentry-mac并重试,否则你需要更改配置。查看此评论问题了解详细信息但这应该没问题:

brew install pinentry-mac
echo "pinentry-program /usr/local/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf
killall gpg-agent

相关内容