1
VS 2010 (C#)을 사용하고 있습니다. 파일을 FTP 사이트에서 업로드 (다운로드) 할 때 파일을 암호화 (암호 해독)하려고합니다. 로컬의 임시 파일을 사용하여 다운로드하기 전에 암호화하고 다운로드 한 후에 해독하는 것이 더 빠를 것이라고 생각했습니다. 아래 코드에서 오류가 발생합니다. 여러 스트림 유형 (즉, FileStream, CryptoStream 및 Stream)을 정렬 할 수없는 것 같습니다. 어떤 도움이라도 대단히 감사합니다.FTP 사이트에 게시 된 파일 암호화
public void Upload(byte[] desKey, byte[] desIV)
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(Destination);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(UserName, Password);
FileStream fStream = File.Open(SourceFile, FileMode.OpenOrCreate);
CryptoStream responseStream = new CryptoStream(fStream, new DESCryptoServiceProvider().CreateDecryptor(desKey, desIV), CryptoStreamMode.Read);
byte[] fileContents = Encoding.UTF8.GetBytes(responseStream.ToString());
responseStream.Close(); ///ERROR here
request.ContentLength = fileContents.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
response.Close();
}
단위 테스트 :이 나를 위해 일
public void CleanEncryptUploadTest()
{
FT.ftp uploadTest = new FT.ftp();
uploadTest.UserName = "ausername";
uploadTest.Password = "apassword";
uploadTest.SourceFile = "D:\\Temp\\Test\\file.txt";
uploadTest.Destination = "ftp://ftp.mysite.com/test2.txt";
byte[] key = ASCIIEncoding.ASCII.GetBytes("TestZone");
byte[] initVector = ASCIIEncoding.ASCII.GetBytes("TestZone");
uploadTest.Upload(key, initVector);
}
무엇이 오류입니까? – CharlesB
무엇이 당신이 이것을 더 빨리 할 수 있었습니까? –
은 대용량 파일을 메모리에 저장 한 다음 웹 사이트에 직접 쓰는 것이 원본 파일을 읽는 것, 로컬 컴퓨터에서 암호화 된 복사본을 만들고 마지막으로 암호화 된 파일을 업로드하는 것보다 빠릅니다. 내가 틀렸을 수도있다. –