2011-12-28 60 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