我正在尝试使用C#加密传入的文档,并且正在将GnuPG与输入重定向一起使用。我需要在单个步骤中使用-se(签名和加密),这需要输入密码。但是由于某种原因,输入重定向无法正常工作。感谢你的帮助。
控制权将被阻止。
我不确定是否有死锁或子进程(gpg.exe)在等待输入。

pgpproc = new Process();
pgpproc.StartInfo.FileName = exeFilePath;
pgpproc.StartInfo.RedirectStandardOutput = false;
pgpproc.StartInfo.RedirectStandardInput = true;
pgpproc.StartInfo.UseShellExecute = false;
pgpproc.StartInfo.Arguments = "-a  -o C:\PGPStaging\output.pgp -se -r recipientID C:\PGPStaging\input.txt";
pgpproc.StartInfo.CreateNoWindow = true;
pgpproc.Start();
StreamWriter myStreamWriter = pgpproc.StandardInput;
myStreamWriter.Write("*****");
myStreamWriter.Close();

if (pgpproc.WaitForExit(waittime))
{
  //success
}
else
{
  //failure
  pgpproc.Kill();
  pgpproc.WaitForExit();
}


`

最佳答案

您可以做的第一件事是删除重定向并亲自查看控制台,以了解gnupg在做什么/正在等待。接下来,尝试将换行符(\ n或0x13或0x130x10,尝试所有变体)添加到密码的末尾-键入内容时,按Enter即可将其传递,并且在此处也必须执行相同的操作。
最后,您可以使用OpenPGPBlackbox来执行操作,而无需外部应用程序。

07-26 02:01