我目前正在编写一个批处理脚本来自动签署和加密文件,在GnuPG版本2.0.30上。
有人可以解释为什么以下内容无法在我的Windows机器上运行:
echo "passphrase"| gpg2 --batch --yes --always-trust --passphrase-fd 0 -es -r "Public key for encryption" "Path of file to encrypt"
据我所知,这应该是echo(我的密码)的输出作为--passphrase-fd 0的输入(当然在STDIN句柄上运行0)。我似乎无法使用它,并且不确定它是否是我的代码,或者它只是在Windows上运行此问题。
每当我执行此命令时,我都会
"no default secret key: Bad passphrase"
"sign+encrypt failed: Bad passphrase"
作为一种解决方法,我能够使用重定向操作符<并将文件路径传递给我的密码,仍然使用STDIN句柄(0):
gpg2 --batch --yes --always-trust --passphrase-fd 0 -es -r "Public key for encryption" "Path of file to encrypt" < "Filepath to passphrase"
我意识到将密码短语存储在本地文件中是不好的做法,并且可能会考虑完全删除签名,但为了我自己的利益,我想更好地理解为什么这不能使用管道工作(在Windows上)。
谢谢!