2009-07-31 3 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! 당신은 모든 내 질문에 답했습니다. 블로그를 읽으 러 갈거야. – iburlakov

1

GPL과 GnuPG를 사용해도 괜찮다면 gnupg-sharp을 사용할 수 있습니다.

+0

gnupg-sharp는 명령 행 유틸리티를 감싸는 래퍼이므로 명령 행 유틸리티를 설치해야합니다. – Randolpho

+1

사실, 클라이언트에는 전체 설치가 필요하지 않습니다. 단지 gpg.exe와 iconv.dll 만 있으면 충분합니다. 응용 프로그램과 함께 설치할 수 있습니다. 레지스트리 변경도 필요하지 않습니다. –

4

음, C#의 bouncy castle cryptography library은 PGP를 암호화하고 해독하는 데 사용할 수 있습니다. PGP 암호화 작업을 위해 내부적으로 사용합니다. 완전히 자체적으로 포함되어 있으므로 기존 프로그램이나 라이브러리에 의존하지 않습니다.

그러나 명령 줄 프로그램이 아니라 라이브러리라는 점에 유의하십시오. 소스 코드에는 CLI를 사용해야하는 경우 빌드 할 수있는 몇 가지 예제 명령 행 프로그램 유틸리티가 함께 제공됩니다.

+0

탄력성을 사용하여 PGP 파일을 해독하는 예를 보여줄 수 있습니까? 다운로드에서 예제를 찾을 수 없었습니다. –

1
+1

"우리 중 누구도 .NET 언어로 프로그램을 작성하지 못했지만 우리는 모두 그것을 배우는 데 열중했습니다. 그래서 우리는 C#을 결정했습니다." - 두 학생의 실험 프로젝트가 불행히도 많은 확신을 얻지는 못합니다 (코드는 훌륭하지만 지역 사회 채택 및 리뷰는 어디입니까 ...) – piers7