使用PGP和C#解密文件

时间:2011-07-19 19:08:20

标签: c# pgp encryption openpgp

我的问题是当命令行运行时它不会在我的解密文本文件中添加任何内容。我在decrypt.txt文件中添加了文本以查看它是否写入了文件,因为文本被删除了。

        System.Diagnostics.ProcessStartInfo psi =
        new System.Diagnostics.ProcessStartInfo("cmd.exe");
        psi.CreateNoWindow = true;
        psi.UseShellExecute = false;
        psi.RedirectStandardInput = true;
        psi.RedirectStandardOutput = true;
        psi.RedirectStandardError = true;
        psi.WorkingDirectory = "c:\\";

        System.Diagnostics.Process process = System.Diagnostics.Process.Start(psi);
        string sCommandLine = "echo femme toxin sorghum| gpg.exe --batch --passphrase-fd 0 --decrypt E:\\entemp.txt > E:\\detemp.txt";
        process.StandardInput.WriteLine(sCommandLine);
        process.StandardInput.Flush();
        process.StandardInput.Close();
        process.WaitForExit();
        process.Close();

1 个答案:

答案 0 :(得分:2)

我最近一直在做很多gpg.exe的事情......

我认为您正在将gpg命令标准重定向到您的文件...

你可能想要更像这样的东西

echo password123|gpg.exe --yes --batch --passphrase-fd 0 --decrypt --output c:\file.txt c:\file.gpg

你也可以直接在你的进程中调用gpg.exe,而不是调用cmd,然后传递一个命令...如果你这样做,你将修改“echo”的东西并添加--yes ... c:\file.gpg等等到一个参数属性。那么......你的第一个输入就像gpgProc.standardinput.writeline(password123);

此方法还使您能够直接获取标准错误输出并处理gpg.exe的退出代码,而不是cmd.exe退出代码等。

也许这会有所帮助......