Включить парольную фразу в команду расшифровки - PullRequest
0 голосов
/ 28 декабря 2011

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

Ответы [ 2 ]

2 голосов
/ 28 декабря 2011

Вывод rsautl говорит вам, что он не может найти файл private.pem.Это означает, что процесс, вероятно, выполняется в другом каталоге, отличном от того, где находится этот файл.

Попробуйте установить рабочий каталог в каталог, в котором находятся private.pem и textToDecrypt.txt (см. Этот вопрос: .NET Process.Start каталог по умолчанию? )

openSsl.WorkingDirectory = // working directory

Или используйте абсолютные пути для private.pem и textToDecrypt.txt:

openSsl.StandardInput.WriteLine("rsautl -decrypt -inkey x:\full\path\private.pem -in x:\full\path\textToDecrypt.txt -out decrypted.txt");
1 голос
/ 28 декабря 2011
  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/?Это оболочка openssl для .NET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...