好的,我有一個文本文件,其中包含一個名爲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