Расшифровать файл, зашифрованный с помощью 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
Спасибо! Мне не хватало ... партии. Мне удалось заставить его работать.