Jak mohu šifrování / dešifrování pomocí GnuPG / GPG4Win z webových stránek?

hlasů
1

Snažím se k šifrování / dešifrování uživatelských jmen projít mezi dvěma různými webových stránek pomocí gpg4win 2.1.0. Mohu získat můj kód pro práci na mém počítači vývoj, ale ne ve výrobě.

Jsem vývoji aplikace s VS 2008.

Jsem spustit GPG4Win instalační balíček, vybral GnuPG & Kleopatra.

Já jsem se pokusil použít kód, který naleznete v „http://www.codeproject.com/KB/security/gnupgdotnet.aspx“.

Dostávám Kód chyby 255 Neznámá chyba.

Následující ukázka kódu je to, jak je aplikace GPG spuštěn. BuildOptions()Vrací řetězec:

--homedir C:\Path\gnupg --no-auto-check-trustdb --always-trust --no-default-keyring --secret-keyring C:\Path\gnupg\secring.gpg --keyring C:\Path\gnupg\pubring.gpg --yes --batch --encrypt --armor --recipient recipient@email.ca --passphrase-fd 0 --no-verbose

public void ExecuteCommand(string inputText, out string outputText)
{
  outputText = ;

  string gpgOptions = BuildOptions();
  string gpgExecutable = GetGpgPath();
  binddirectory = GetGPGInstallLocation();

  // TODO check existence of _bindirectory and gpgExecutable

  // Create startinfo object

  ProcessStartInfo pInfo = new ProcessStartInfo(gpgExecutable, gpgOptions);
  pInfo.WorkingDirectory = _bindirectory;
  pInfo.CreateNoWindow = true;
  pInfo.UseShellExecute = false;
  // Redirect everything: 
  // stdin to send the passphrase, stdout to get encrypted message, stderr in case of errors...
  pInfo.RedirectStandardInput = true;
  pInfo.RedirectStandardOutput = true;
  pInfo.RedirectStandardError = true;
  _processObject = Process.Start(pInfo);

  // Send pass phrase, if any
  if (!string.IsNullOrEmpty(_passphrase))
  {
    _processObject.StandardInput.WriteLine(_passphrase);
    _processObject.StandardInput.Flush();
  }

  // Send input text
  _processObject.StandardInput.Write(inputText);
  _processObject.StandardInput.Flush();
  _processObject.StandardInput.Close();

  _outputString = ;
  _errorString = ;

  // Create two threads to read both output/error streams without creating a deadlock
  ThreadStart outputEntry = new ThreadStart(StandardOutputReader);
  Thread outputThread = new Thread(outputEntry);
  outputThread.Start();
  ThreadStart errorEntry = new ThreadStart(StandardErrorReader);
  Thread errorThread = new Thread(errorEntry);
  errorThread.Start();

  if (_processObject.WaitForExit(ProcessTimeOutMilliseconds))
  {
     // Process exited before timeout...
     // Wait for the threads to complete reading output/error (but use a timeout!)
     if (!outputThread.Join(ProcessTimeOutMilliseconds/2))
       outputThread.Abort();

     if (!errorThread.Join(ProcessTimeOutMilliseconds/2))
       errorThread.Abort();
  }
  else
  {
    // Process timeout: PGP hung somewhere... kill it (as well as the threads!)
    _outputString = ;
    _errorString = Timed out after  + ProcessTimeOutMilliseconds.ToString() +  milliseconds;
    _processObject.Kill();
    if (outputThread.IsAlive)
      outputThread.Abort();

    if (errorThread.IsAlive)
      errorThread.Abort();
  }

  // Check results and prepare output
  _exitcode = _processObject.ExitCode;
  if (_exitcode == 0)
    outputText = _outputString;
  else
  {
    if (_errorString == )
    {
      _errorString = GPGNET: [ + _processObject.ExitCode.ToString() + ]: Unknown error;
    }
    throw new GnuPGException(_errorString);
  }
}
Položena 28/09/2011 v 23:34
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
0

Používám tento kód v aplikaci windows služby. šifrování přenosu souborů a dešifrování

Ale pokud velikost InputText velký než ~ 180 KB

 _processObject.StandardInput.Write(inputText);

Tato linka je uzamčen mé služby.

Nechápu tento stav. Prosím pomozte !!!

Odpovězeno 29/09/2014 v 13:15
zdroj uživatelem

hlasů
0

Byl jsem schopen vyřešit můj problém vytvořením uživatele pro identitu aplikace bazénu provozovat jak a nastavte potřebná oprávnění pro přístup k programu klíčenka / gpg.

Odpovězeno 04/10/2011 v 20:28
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more