2011-12-28 59 views
0

好的,我有一个文本文件,其中包含一个名为textToDecrypt.txt的加密字符串。我运行的OpenSSL以下命令来创建一个名为decrypted.txt包含解密的数据文件:在解密命令中包含密码短语

rsautl -decrypt -inkey private.pem -in textToDecrypt.txt -out decrypted.txt 

当我键入此在,它要求我为接下来的事情就是我的密码短语这是很好的,当我手动这样做但是我打算在C#中以编程方式执行此操作,并且在将第一个命令发送给程序后跟第二个包含密码短语的命令时会引发问题,如下所示。

OpenSSL Output

我的问题是,我可以包括口令作为初始命令的一部分,而不是发送解密命令第一其次是密码的?

只是为了澄清,当我手动执行此操作时(通过打开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(); 
+0

看看您的输出:问题似乎并不是无法输入密码,而是找不到私钥文件。你确定它在程序的当前目录中吗? – codeling 2011-12-28 14:28:59

+0

就像我说的那样,当我手动运行这些命令时一切正常,问题是当我运行相同的命令使用相同的exe编程。 – JMK 2011-12-28 14:30:17

+0

但输出仍然表示它没有找到private.pem文件...您的应用程序可能有不同的“当前目录”集。 rsautl应用程序打印该错误的可能性很小,因为它是由另一个程序启动的,而不是因为它实际上找不到private.pem ** – codeling 2011-12-28 14:31:34

回答

2

rsautl输出告诉你它找不到private.pem文件。这意味着该进程可能运行在另一个目录中,而不是该文件所在的目录。

尝试将工作目录设置到一个地方private.pemtextToDecrypt.txt是(看到这个问题:.NET Process.Start default directory?

openSsl.WorkingDirectory = // working directory 

或者,使用绝对路径,private.pemtextToDecrypt.txt

openSsl.StandardInput.WriteLine("rsautl -decrypt -inkey x:\full\path\private.pem -in x:\full\path\textToDecrypt.txt -out decrypted.txt"); 
+0

感谢你们的帮助,非常感谢! – JMK 2011-12-28 14:42:22

1
  1. 尝试设置密钥文件的完整路径: openSsl.StandardInput.WriteLine("rsautl -decrypt -inkey c:\full\path\there\private.pem -in textToDecrypt.txt -out decrypted.txt");

  2. 为什么不使用http://sourceforge.net/projects/openssl-net/?这是.NET的openssl包装。

+0

也必须使用textToDecrypt.txt的完整路径 – codeling 2011-12-28 14:36:23

+0

@nyarlathotep,是的:)我希望提问者会关注什么是“工作目录”,以及在哪里搜索新创建的文件。 – werewindle 2011-12-28 14:41:37