PGP šifrování od C # pomocí GnuPG

hlasů
3

Snažím se zašifrování příchozí dokument v jazyce C #, a já jsem s použitím GnuPG s přesměrováním vstupu. Musím použít -se (znak a šifrování) v jediném kroku, který vyžaduje zadání přístupového hesla. Ale z nějakého důvodu, přesměrování vstup nefunguje. Oceňuji tvojí pomoc. Ovládání se chystá jiného bloku. Nejsem si jistý, jestli tam je zablokování nebo podřízený proces (gpg.exe) čekání na vstup.

pgpproc = new Process();
pgpproc.StartInfo.FileName = exeFilePath;
pgpproc.StartInfo.RedirectStandardOutput = false;
pgpproc.StartInfo.RedirectStandardInput = true;
pgpproc.StartInfo.UseShellExecute = false;
pgpproc.StartInfo.Arguments = -a  -o C:\PGPStaging\output.pgp -se -r recipientID C:\PGPStaging\input.txt;
pgpproc.StartInfo.CreateNoWindow = true;
pgpproc.Start();
StreamWriter myStreamWriter = pgpproc.StandardInput;
myStreamWriter.Write(*****);
myStreamWriter.Close();

if (pgpproc.WaitForExit(waittime))
{
  //success
}
else
{
  //failure
  pgpproc.Kill();
  pgpproc.WaitForExit();
}

`

Položena 15/06/2010 v 04:28
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
1

Zkuste přidat --passphrase-fd 0do příkazového řádku GnuPG ho instruovat číst hesla ze standardního vstupu.

Odpovězeno 19/06/2010 v 11:40
zdroj uživatelem

hlasů
1

První věc, kterou můžete udělat, je odstranit přesměrování a vidět konzole sami, aby bylo poznat, co GnuPG dělá / čekání. Next, zkuste přidat nový řádek znak (\ n nebo 0x13 nebo 0x130x10, vyzkoušet všechny varianty) na konci hesla - když napíšete něco, stisknutím klávesy Enter ji projít, a vy musíte udělat totéž i zde. A konečně, můžete použít OpenPGPBlackbox provést operaci bez externích aplikací.

Odpovězeno 15/06/2010 v 09:23
zdroj uživatelem

hlasů
0

Měl jsem stejný problém, když jsem měl provést nějaké dešifrování. Co Nakonec jsem dělal je Potrubí zadání přístupového hesla jako tak.

    procStartInfo.Arguments = @"/c echo " + passphrase + @"| c:\gnupg\gpg --passphrase-fd --     decrypt --output " + "\"" + fileLocationToDecryptTo + "\"" + " \"" + fileLocationToDecryptFrom     + "\"";

Zdá se, že funguje docela dobře.

Odpovězeno 24/01/2013 v 21:46
zdroj uživatelem

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