好的,我有一个文本文件,其中包含一个名为textToDecrypt.txt
的加密字符串。我运行的OpenSSL以下命令来创建一个名为decrypted.txt
包含解密的数据文件:在解密命令中包含密码短语
rsautl -decrypt -inkey private.pem -in textToDecrypt.txt -out decrypted.txt
当我键入此在,它要求我为接下来的事情就是我的密码短语这是很好的,当我手动这样做但是我打算在C#中以编程方式执行此操作,并且在将第一个命令发送给程序后跟第二个包含密码短语的命令时会引发问题,如下所示。
我的问题是,我可以包括口令作为初始命令的一部分,而不是发送解密命令第一其次是密码的?
只是为了澄清,当我手动执行此操作时(通过打开cmd.exe,导航到包含我的openssl.exe的目录并运行此命令,然后在出现提示时键入第一个命令,然后键入密码短语)当我尝试以编程方式重新创建此过程时,出现问题。
我尝试使用Thread.Sleep()等待几秒钟后发送第二个命令,但它有相同的结果。
编辑:我的C#代码如下:
Process openSsl = new Process();
openSsl.StartInfo.FileName = processExecutable;
openSsl.StartInfo.UseShellExecute = false;
openSsl.StartInfo.CreateNoWindow = false;
openSsl.StartInfo.RedirectStandardInput = true;
openSsl.Start();
openSsl.StandardInput.WriteLine("rsautl -decrypt -inkey private.pem -in textToDecrypt.txt -out decrypted.txt");
openSsl.StandardInput.WriteLine("MyPassphrase");
openSsl.StandardInput.Close();
看看您的输出:问题似乎并不是无法输入密码,而是找不到私钥文件。你确定它在程序的当前目录中吗? – codeling 2011-12-28 14:28:59
就像我说的那样,当我手动运行这些命令时一切正常,问题是当我运行相同的命令使用相同的exe编程。 – JMK 2011-12-28 14:30:17
但输出仍然表示它没有找到private.pem文件...您的应用程序可能有不同的“当前目录”集。 rsautl应用程序打印该错误的可能性很小,因为它是由另一个程序启动的,而不是因为它实际上找不到private.pem ** – codeling 2011-12-28 14:31:34