2013-05-18 2 views
1

AES 192로 파일을 암호화하고 소켓을 통해 클라이언트로 보내야합니다. 나는 파일을 암호화하는이 코드를 사용하고 있습니다 : 내가 지금 수신자가 파일을 재구성하고 암호를 해독 할 수 있도록이 소켓을 통해 임시 파일을 암호화 보낼 수 있는지 궁금하네요파일을 암호화하여 보내십시오.

string outputFile = "crypted"; 

      //Confidentiality 
      RijndaelManaged AES192Confidentiality = new RijndaelManaged(); 
      AES192Confidentiality.KeySize = 192; 
      AES192Confidentiality.BlockSize = 192; 
      AES192Confidentiality.IV = ConfIV; 
      AES192Confidentiality.Key = ConfKey; 
      AES192Confidentiality.Mode = CipherMode.CBC; 
      FileStream inputFileStream = new FileStream(par.GetFilePath(), FileMode.Open, FileAccess.Read); 
      FileStream outputFileStream = new FileStream(outputFile, FileMode.Create, FileAccess.Write); 
      byte[] inputFileData = new byte[(int)inputFileStream.Length]; 
      inputFileStream.Read(inputFileData, 0, (int)inputFileStream.Length); 
      CryptoStream encryptStream = new CryptoStream(outputFileStream, AES192Confidentiality.CreateEncryptor(), CryptoStreamMode.Write); 
      encryptStream.Write(inputFileData, 0, (int)inputFileStream.Length); 
      encryptStream.FlushFinalBlock(); 
      encryptStream.Close(); 

합니다. 누군가 나에게 자습서 나 가이드를 줄 수 있습니까? 사전

+0

네트워크 라이브러리 체크 아웃을 사용해 주시면 http://www.networkcomms.net/using-encryption/을 참조하십시오. 이 라이브러리의 개발자입니다. – MarcF

+0

답장을 보내 주셔서 감사합니다. 그러나이 프로그램은 학교 배정을위한 것이므로 외부 라이브러리를 사용할 수 없습니다. :) – Francesco

+0

http://www.codeproject.com/Articles/26085/File-Encryption-and-Decryption- in-C –

답변

1

당신이 소켓 NetworkStream의 인스턴스를 만든 다음 encryptStream.CopyTo(myNetworkStream);

1

가 서버에 연결하고 데이터를 전송하는 TcpClient 사용을 고려 호출 할 수 있습니다에 여러분 모두 감사합니다. 난 당신이 인 학교 일을 지시 한대로 전체 답을 쓸 수 있지만 예는 데이터 기록 방법에 대해 살펴 않을거야 :

// Get a client stream for reading and writing. 
NetworkStream networkStream = client.GetStream(); 

// Send the message to the connected TcpServer. 
networkStream.Write(data, 0, data.Length); 

당신은 약간을 작성하는 CopyTo를 사용하도록 조정할 방지 할 수 있습니다 데이터를 암호화 스트림에서 네트워크 스트림으로 직접 전송할 수 있습니다.

여기서는 secure key exchange의 문제를 해결할 필요가 없다고 가정합니다.

+0

답장을 보내 주셔서 감사합니다. 보안 교환 문제를 해결할 필요가 없다고 말씀 하셨듯이이 프로그램의 범위를 벗어납니다. 한 가지 질문을하고 싶습니다.이 방법으로 파일의 확장자를 수신기 측에서 재구성 할 수있는 방법을 보여 줬습니까? – Francesco

+1

원본 파일 이름의 확장자를 의미하는 경우 암호화 된 데이터 또는 별도로 파일 이름을 보내야합니다. 파일 데이터로 암호화하여 보낼 수 있습니다. 서버 측에서는 암호 해독 후 확장을 읽은 다음 원본 데이터를 읽어야합니다. – Steve

+0

정확히 내가 무엇을 고맙다고 물었습니다. :) – Francesco

관련 문제