我正在尝试用 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无需外部应用程序即可执行操作。
关于c# - 使用 GnuPG 从 C# 进行 PGP 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3042348/