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 2012-04-21 08:54:41
是什麼讓你覺得這會更快? – 2012-04-21 08:56:10
認爲在大文件的內存中加密然後直接寫入網站比讀源文件更快,在本地機器上創建加密副本,最後上傳加密文件。我可能是錯的。 – 2012-04-21 09:07:29