2009-07-31 4 views
2

Comment crypter un fichier avec une clé publique, qui a été ajouté au trousseau de clés actuel, en utilisant C# et la ligne de commande?PGP Freeware et C#

Merci.

+0

Vous ne savez pas exactement ce que vous entendez par "trousseau de clés suivant". –

+0

Je suppose que c'est une barrière de la langue. – Randolpho

Répondre

1

Vous pouvez utiliser mon implémentation je l'ai écrit il y a un an. Je sais que c'est un peu moche.

Vous avez besoin de pgp.exe et de quelques informations à ce sujet. voir my blog post.

/// <summary> 
     /// Encryps given file using PGP Public Key 
     /// </summary> 
     /// <param name="filename"></param> 
     public string Encrypt(string filename, bool isBinary, ref string outstr){ 

      string outputfilename = filename; 


      //We use stringbuilder for performance considerations 
      StringBuilder sb = new StringBuilder(); 
      sb.Append("/c "); 
      sb.Append(""); 
      sb.Append(PGPLocation); 
      sb.Append(" +force -es "); 
      sb.Append("\""); 
      sb.Append(filename); 
      sb.Append("\" "); 
      sb.Append(ToUserName); 
      sb.Append(" -u "); 
      sb.Append(MyUserName); 

      sb.Append(" -z "); 
      sb.Append(PassPhrase); 
      sb.Append(" "); 

      // Use binary indicator because PGP produces different outputs for binary and plain text files 
      if (isBinary) 
       sb.Append("-a"); 

      proc.StartInfo.Arguments = sb.ToString(); 


      //proc.StartInfo.Arguments = "/c pgp +force -es "+filename+" cumacam -u bugra"; 


      proc.Start(); 
      if (WaitForInfinity) 
       proc.WaitForExit(); 
      else 
       proc.WaitForExit(WaitTime); 
      //string res = proc.StandardOutput.ReadToEnd(); 

      outstr = proc.StartInfo.Arguments; 
      if (proc.HasExited) 
      { 
       int ab = proc.ExitCode; 
       if (ab != 0) 
       { 
        FireError(Convert.ToInt32(ErrorTypes.PGPEncryptError), "Erro No: " + ab.ToString() + "in PGP. Details: "+" "+proc.StandardOutput.ReadToEnd()); 
        return null; 
       } 
       else 
        if (!isBinary) 
         return outputfilename+".pgp"; 
       return outputfilename + ".asc"; 
      } 

      return null; 
     } 
+0

Merci ercu! Vous avez répondu à toutes mes questions non posées. Aller lire le blog ryou. – iburlakov

1

Vous pouvez utiliser gnupg-sharp, à condition d'utiliser la GPL et GnuPG.

+0

Gardez à l'esprit que gnupg-sharp est un wrapper autour de l'utilitaire de ligne de commande, et nécessite donc l'installation de l'utilitaire de ligne de commande. – Randolpho

+1

True, mais vous n'avez pas besoin d'une installation complète sur le client. Juste gpg.exe et iconv.dll sont assez - que vous pouvez installer avec votre application. Aucun changement de registre nécessaire non plus. –

4

Eh bien, le bouncy castle cryptography library pour C# peut être utilisé pour crypter et décrypter PGP; C'est ce que nous utilisons en interne pour le cryptage PGP. C'est entièrement autonome, donc pas de dépendances sur les programmes ou les bibliothèques existantes. Cependant, gardez à l'esprit que c'est une bibliothèque et non un programme en ligne de commande. Le code source est livré avec des exemples d'utilitaires de programme de ligne de commande que vous pouvez créer si vous avez besoin de l'utiliser.

+0

pouvez-vous me montrer un exemple de décryptage d'un fichier PGP utilisant château gonflable? Je n'ai pas pu trouver d'exemples dans les téléchargements. –

1
+1

"Aucun d'entre nous n'avait jamais écrit un programme dans un langage .NET, mais nous étions tous les deux désireux de l'apprendre. - Le projet expérimental de deux étudiants n'inspire malheureusement pas beaucoup de confiance (quel que soit le code, où est l'adoption et la critique de la communauté ...) – piers7

Questions connexes