2009-07-31 5 views
2

c#とコマンドラインを使用して、現在の鍵リングに追加された公開鍵でファイルを暗号化する方法はありますか?PGPフリーウェアとC#

ありがとうございました。

+0

「フォローキーリング」の意味が不明です。 –

+0

私はそれが言語の壁のようなものだと思っています。 – Randolpho

答えて

1

あなたは、私は一年前に書いた私の実装を使用することができます。私はそれが少し醜いことを知っている。

pgp.exeとその背景が必要です。 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

ありがとうercu!あなたは私のすべての質問に答えました。 ryouブログを読もう。 – iburlakov

1

gnupg-sharpは、GPLとGnuPGの使用で問題がなければ使用できます。

+0

gnupg-sharpはコマンドラインユーティリティのラッパーであるため、コマンドラインユーティリティをインストールする必要があります。 – Randolpho

+1

真ですが、クライアントに完全インストールは必要ありません。 gpg.exeとiconv.dllだけで十分です。アプリケーションと共にインストールできます。レジストリの変更も必要ありません。 –

4

まあ、C#のbouncy castle cryptography libraryは、PGPの暗号化と復号化に使用できます。 PGP暗号化のために内部的に使用しています。これは完全に自己完結型なので、既存のプログラムやライブラリには依存しません。

ただし、コマンドラインプログラムではないことに注意してください。ソースコードには、CLIを使用する必要がある場合に作成できるコマンドラインプログラムユーティリティの例が付属しています。

+0

弾力のある城を使ってPGPファイルを解読する例を教えてください。私はダウンロードの例を見つけることができませんでした。 –

1
+1

"私たちはどちらも.NET言語でプログラムを書いたことはありませんでしたが、私たちは両方ともそれを学ぶことに熱心でしたので、C#を決めました。 - 2人の学生の実験プロジェクトは残念なことに多くの自信を与えません(コードは素晴らしいですが、コミュニティの採用とレビューはどこですか...) – piers7

関連する問題