Хорошо, у меня есть текстовый файл, содержащий зашифрованную строку текста с именем 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();