tbim Ответов: 0

Расшифровать файл, зашифрованный с помощью gnupg


Я использую C# в сборке библиотеки классов Visual Studio 2012, .Net Framework версии 4.5.1.

Я пытаюсь расшифровать файл, зашифрованный с помощью [^]При помощи GnuPG. Файлы шифруются с помощью пароля и без использования ключевых файлов. Если это возможно, я бы предпочел не устанавливать GPG4Win или его эквивалент на сервере. Я бы предпочел использовать такую библиотеку, как BouncyCastle, в моей сборке класса C#.

Я могу найти всевозможные примеры и помочь в шифровании и дешифровании с помощью ключевых файлов, но не могу найти работоспособный сценарий, в котором используется простой пароль.

Что я уже пробовал:

1. Использование cmd.exe процесс и строка командной строки. Например:
echo D4pBiQpTJInd3N| gpg.exe --passphrase-fd 0 -o "D:\TESTEncrypt.txt" --decrypt "D:\TESTEncrypt.txt.gpg"

Код (найден на [^]CodeProject):
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo("cmd.exe");
psi.CreateNoWindow = true;
psi.UseShellExecute = false;
psi.RedirectStandardError = true;
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = true;
psi.WorkingDirectory = Path.GetDirectoryName(gpgExePath);

// Must construct the command line arguments as a local string variable and pass it to the process or it will fail.
//string sCommandLine = "echo " + passphrase + "| gpg.exe --passphrase-fd 0 -o \"" + outputFileNameFullPath + "\" --decrypt \"" + encryptedFile.FullName + "\"";
string sCommandLine = string.Format("echo {0}|gpg.exe --passphrase-fd 0 -o \"{1}\" --decrypt \"{2}\"", passphrase, decryptedOutputFile, encryptedSourceFile);

var process = System.Diagnostics.Process.Start(psi);
process.StandardInput.WriteLine(sCommandLine);
process.StandardInput.Flush();
process.StandardInput.Close();
process.WaitForExit();
//string result = process.StandardOutput.ReadToEnd();
//string error = process.StandardError.ReadToEnd();
int rc = process.ExitCode;
process.Close();

Debug.WriteLine(string.Format("{0} exited with return code {1},", Path.GetFileName(gpgExePath), rc));

Этот код вызывает появление приглашения" pinentry". Если я введу пароль, файл будет расшифрован. Однако мне нужно, чтобы это работало на сервере, который не укомплектован персоналом. Я думал, что ввод пароля решит эту проблему, но, по-видимому, нет.

2. Я посмотрел после установки BouncyCastle, но не нашел каких-либо примеры, используя только пароль (стихи, используя ключевые файлы).

Спасибо.

j snooze

а вы пробовали
команду GPG --фраза "ваша фраза" --партия --да --расшифровать "свой путь"

tbim

Спасибо! Мне не хватало ... партии. Мне удалось заставить его работать.

0 Ответов