2012-10-11 4 views
-2

이 코드는 온라인에 있습니다.이 프로그램에서 무엇이 전달되는지 알고 싶습니다.이 출력과 입력 문자열은 무엇입니까? 입력을 파일 이름으로 전달하고 경로로 출력하지만 오류가 발생합니다.파일 암호화 C#

private void EncryptFile(string inputFile, string outputFile) 
{ 
    try 
    { 
     string password = @"myKey123"; // Your Key Here 
     UnicodeEncoding UE = new UnicodeEncoding(); 
     byte[] key = UE.GetBytes(password); 

     string cryptFile = outputFile; 
     FileStream fsCrypt = new FileStream(cryptFile, FileMode.Create); 

     RijndaelManaged RMCrypto = new RijndaelManaged(); 

     CryptoStream cs = new CryptoStream(fsCrypt,RMCrypto.CreateEncryptor(key, key),CryptoStreamMode.Write); 

     FileStream fsIn = new FileStream(inputFile, FileMode.Open); 

     int data; 
     while ((data = fsIn.ReadByte()) != -1) 
      cs.WriteByte((byte)data); 

     fsIn.Close(); 
     cs.Close(); 
     fsCrypt.Close(); 
    } 
    catch 
    { 
     MessageBox.Show("Encryption failed!", "Error"); 
    } 
} 
+2

무엇이 오류입니까? –

+0

암호화가 실패했다고 표시됩니다. – SoftwareDeveloper

+0

... 당신이 예외를 먹기 때문입니다. 디버깅 목적으로 try-catch를 제거하거나 모든 예외를 catch하도록 catch 절을 변경하고 (catch (Exception ex)), 중단 점을 설정하고 예외를 검사하십시오. – CodeCaster

답변

2

outputFile 매개 변수는 경로가 아니며 쓰기가 필요한 정규화 된 파일 이름입니다. 이 코드를 호출하는 예 방법은 다음과 같습니다

catch(Exception ex) { 
    MessageBox.Show(ex.Message); // will show the top exception 
    if (ex.InnerException != null) { 
    MessageBox.Show(ex.InnerException.Message); // will show additional details if present 
    } 
} 

보조 노트 : 당신은 알고 단지 있도록

EncryptFile(@"c:\temp\unencryptedfile.txt", @"c:\temp\encryptedfile.txt");

은 다음과 catch 코드를 교체하는 것이 없다면 코드 누수 메모리가 있습니다. using 절을 조사하고 사용중인 클래스를 찾으려면 IDisposable을 구현하는 것이 좋습니다.

+0

그래 내 프로그램에서 키를 사용하고 싶지 않으면 크리스가 잘 작동합니다. 문자열 암호를 제거 할 수 있습니까? – SoftwareDeveloper

+0

@ SoftwareDeveloper : 암호화에는 키가 필요합니다. 너는 그것을 제거 할 수 없다. – NotMe