Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Encryption GnuPG自动标志&x2B;加密-Windows上的密码短语fd 0问题_Encryption_Automation_Stdin_Gnupg_Windows Scripting - Fatal编程技术网

Encryption GnuPG自动标志&x2B;加密-Windows上的密码短语fd 0问题

Encryption GnuPG自动标志&x2B;加密-Windows上的密码短语fd 0问题,encryption,automation,stdin,gnupg,windows-scripting,Encryption,Automation,Stdin,Gnupg,Windows Scripting,我目前正在编写一个批处理脚本,用于在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(我的密码短语)的输出作为--passphras

我目前正在编写一个批处理脚本,用于在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--批处理--是--始终信任--密码短语fd 0-es-r“用于加密的公钥”“要加密的文件路径”<“密码短语的文件路径”
<>我意识到在本地文件中存储一个密码是不好的做法,可能会考虑完全删除签名,但为了我自己,我想更好地理解为什么不能使用管道(Windows)来工作。p>
谢谢

这可能是添加了换行符或其他字符时出现的问题——我对WIndows的
echo
命令了解得不够,无法更具体地说明这一点。无论如何,在多用户系统和服务器上,至少在unix机器上,所有其他系统用户都可以读取该命令,并且该命令可能会被记录,而在
echo
或参数中提供机密可能更糟糕,而您可以更好地控制谁能够读取特定文件。更好的解决方案是使用
gpg预设密码短语
,并在GnuPG的缓存中预设密码短语以便能够使用它。不管怎样,GNUPG2.1几乎强制执行了这一点,谢谢你的建议。综上所述,gpg预设密码短语似乎不适用于windows,除非我遗漏了什么。当我调用gpg预设密码短语时,它会得到一个“…未被识别为内部命令…”,除非我需要从其他目录运行此命令,或者重新配置gpg代理(如果可以从Windows进行配置)。这让我想把所有这些都转移到Linux上哈哈。这可能是因为添加了换行符或其他字符的问题——我对WIndows的
echo
命令了解得不够,无法更具体地说明这一点。无论如何,在多用户系统和服务器上,至少在unix机器上,所有其他系统用户都可以读取该命令,并且该命令可能会被记录,而在
echo
或参数中提供机密可能更糟糕,而您可以更好地控制谁能够读取特定文件。更好的解决方案是使用
gpg预设密码短语
,并在GnuPG的缓存中预设密码短语以便能够使用它。不管怎样,GNUPG2.1几乎强制执行了这一点,谢谢你的建议。综上所述,gpg预设密码短语似乎不适用于windows,除非我遗漏了什么。当我调用gpg预设密码短语时,它会得到一个“…未被识别为内部命令…”,除非我需要从其他目录运行此命令,或者重新配置gpg代理(如果可以从Windows进行配置)。这让我想为了这一切搬到Linux上哈哈。
gpg2 --batch --yes --always-trust --passphrase-fd 0 -es -r "Public key for encryption" "Path of file to encrypt" < "Filepath to passphrase"