2010-11-01 3 views
2

J'utilise la ligne de commande pour crypter les fichiers que j'envoie mais j'essaie de comprendre comment utiliser la même méthode pour les décrypter. Si j'exécute la commande, le mot de passe est demandé, mais je ne vois pas comment transmettre la phrase secrète à l'aide de la ligne de commande. Voici comment je CHIFFREMENT le fichier:Ligne de commande Décryptage GPG avec C# - mot de passe?

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 ""[email protected]"" -r ""[email protected]"" ""C:\file.csc"""; 
proc.Start(); 
proc.WaitForExit(); 

** Voici un lien utile qui a été utilisé pour ma solution: http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/38c21304-fc7a-42cc-a5fb-dcb6da7f6411/

Répondre

2

La propriété Process.StandardInput devrait vous donner un StreamWriter que vous pouvez utiliser pour fournir le mot de passe sur l'entrée standard.

+0

J'ai essayé de faire fonctionner ceci en ajoutant les lignes suivantes en utilisant l'exemple de MSDN mais il ne semble pas envoyer le mot de passe à l'affichage. Je dois les taper manuellement dans la fenêtre cmd. proc.StartInfo.UseShellExecute = false; proc.StartInfo.RedirectStandardInput = true; proc.Start(); StreamWriter myStreamWriter = proc.StandardInput; myStreamWriter.Write ("1234"); myStreamWriter.Close(); – Scott

+0

Je l'ai eu pour travailler maintenant. proc.Start(); proc.StandardInput.WriteLine (mot de passe); proc.StandardInput.Flush(); – Scott

0

GPG sous Linux a --passphrase-fd N, où N est int. Si N == 0, la phrase secrète est lue à partir de l'entrée standard.

Vous ne savez pas si la même chose s'applique sur Windows, mais cela peut valoir la peine d'être vérifié.

+0

Oui qui est disponible sous Windows (au moins en utilisant l'installation de gpg4win). – Thierry

0

Utilisez --passphrase-fd 0 pour que GPG prenne la phrase secrète de stdin, puis la transmette à l'aide d'un tube.

echo 123456| gpg --passphrase-fd 0 -e -u [email protected] -r [email protected] C:\file.csc 

ou

gpg --passphrase-fd 0 -e -u [email protected] -r [email protected] --passphrase-fd 2 file.csc < password.file 

Assurez-vous que vous ne passez pas d'espace supplémentaire sur stdin en quelque sorte que GPG ne gère pas bien les. Je ne suis pas sûr comment vous pouvez passer quelque chose sur stdin sur. NET, vous devrez donc combler le vide là-bas.

+0

J'ai obtenu le premier à travailler mais ma phrase secrète contient un '>' donc j'ai utilisé l'exemple avec un autre fichier qui a une phrase secrète qui ne contient pas ce caractère. J'ai obtenu l'original à travailler en utilisant --passphrase-fichier "pass.txt" mais il est à peine sécurisé avec ma phrase secrète dans un fichier texte ... – Scott

Questions connexes