Pergunta

Estou usando a linha de comando para criptografar arquivos que estou enviando, mas estou tentando descobrir como usar o mesmo método para descriptografá -los. Se eu executar o comando, ele será solicitado para a senha, mas não vejo uma maneira de passar na senha usando a linha de comando. Aqui está como estou criptografando o arquivo:

var proc = new Process();
proc.EnableRaisingEvents = false;
proc.StartInfo.WorkingDirectory = "C:\\";
proc.StartInfo.FileName = @"C:\Progra~1\GNU\GnuPG\gpg.exe";
proc.StartInfo.Arguments = @"-e -u ""user1@example.com"" -r ""user2@example.com"" ""C:\file.csc""";
proc.Start();
proc.WaitForExit();

** Aqui está um link útil que foi usado para minha solução:http://social.msdn.microsoft.com/forums/en-us/csharpgeneral/thread/38c21304-fc7a-42cc-a5fb-dcb6da7f6411/

Foi útil?

Solução

A propriedade Process.StandardInput Deve fornecer um escritor de stream que você pode usar para fornecer a senha na entrada padrão.

Outras dicas

GPG no Linux tem --pasfrase-fd n, Onde N é int. Se n == 0, a senha é lida a partir da entrada padrão.

Não tenho certeza se o mesmo se aplica ao Windows, mas pode valer a pena conferir.

Usar --passphrase-fd 0 Para fazer com que o GPG pegue a senha do stdin e depois passe -o usando um tubo.

echo 123456| gpg --passphrase-fd 0 -e -u user1@example.com -r user2@example.com C:\file.csc

ou

gpg --passphrase-fd 0 -e -u user1@example.com -r user2@example.com --passphrase-fd 2 file.csc < password.file

Certifique -se de não passar espaços extras no stdin, de alguma forma, pois o GPG não lida com isso bem.

Não tenho certeza de como você pode passar algo no stdin no .NET, então você terá que preencher a lacuna lá.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top