c# - 使用 GnuPG 从 C# 进行 PGP 加密

标签 c# encryption gnupg pgp

我正在尝试用 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/

相关文章:

java - 通过运行时进程在 Java 中调用 GnuPG 来加密和解密文件 - 解密总是挂起

c# - 使用 C# {kusto.data} 与集群的 Kusto 连接

c# - 从反射方法 C# 中获取值

c# - 从大文件中读取 JSON 对象

java - 用于 Yubico OpenPGP 智能卡的 PGP 数据加密

python - 是否可以为以后的 session 保存 fernet key ?

objective-c - 使用 SecTransform API(或其他系统 API)在 OS X 上进行 RSA 公钥解密

github - 如何在 github 操作中使用 GPG key ?

c# - Web 服务调用中的 "Impersonating" session

oracle - Oracle PL/SQL dbms_crypto 包能否解密使用 Linux gpg 命令加密的文件?