C#建立檔案的實戰應用樣本解析

來源:互聯網
上載者:User

由於Internet的開放性,C#建立檔案的應用很廣泛,如在任何檔案在傳輸過程中都可能受到篡改,而且傳輸過程的不確定性,使得我們缺乏有效方法保證傳輸檔案的安全。那麼如何找到解決問題的方法呢?這裡我們來談談使用C#建立檔案的應用。

為了避免上述情況,最普遍的做法是隨傳輸檔案提供一個C#建立檔案中的驗證碼,使用者在收到檔案後,通過重新計算檔案驗證碼並與原始驗證碼比較,如果不匹配則表示檔案在傳輸過程中發生了改變。下面,筆者就使用C#給大家示範一下具體的實現過程。

C#建立檔案應用一、建立FileStream

在構建檔案驗證碼之前,首先需要負載檔案,這就要用到.Net framework的FileStream類。在.Net framework下,檔案都表示為一個Stream,即位元組序列的抽象概念。而所有涉及檔案的讀寫操作都通過Stream類的屬性和方法實現。下面,就是具體的實現代碼:

 
  1. FileStream fst= new FileStream(  
  2.  
  3. txtFile.Text,FileMode.Open,  
  4.  
  5. FileAccess.Read, FileShare.Read, 8192);  

這裡使用了FileStream構建函數的一種重載方法,需要提一下的是最後一個參數值8192,該參數值定義的是緩衝區的大小,即當檔案大於8K時,以8K為單位,對檔案進行分段讀取,以提高讀取檔案的效能。

C#建立檔案二、建立MD5對象

在成功建立FileStream對象之下,接下來就可以使用MD5類計算該對象的雜湊值了。這個實現過程非常簡單,只要先聲明一個 MD5CryptoServiceProvider執行個體,然後使用ComputeHash方法完成計算過程,最後通過Hash屬性就可以得到計算好的位元組數組了。

 
  1. ……  
  2.  
  3. MD5CryptoServiceProvider md5=  
  4.  
  5. new MD5CryptoServiceProvider();  
  6.  
  7. FileStream fst= new FileStream(txtFile.Text,FileMode.Open,  
  8.  
  9. FileAccess.Read, FileShare.Read, 8192);  
  10.  
  11. md5.ComputeHash(fst);  
  12.  
  13. byte[] hash=md5.Hash;  
  14.  
  15. ……  

C#建立檔案三、轉換驗證碼字串

由於MD5雜湊演算法返回的是一個位元組資料,因此需要轉換成字串。以下就是具體實現的代碼。

 
  1. ……  
  2.  
  3. byte[] hash=md5.Hash;  
  4.  
  5. StringBuilder sb=new StringBuilder();  
  6.  
  7. foreach(byte byt in hash)  
  8.  
  9. {  
  10.  
  11. sb.Append(String.Format("{0:X1}", byt));  
  12.  
  13. }  
  14.  
  15. TextBox1.Text = sb.ToString();  
  16.  
  17. ……  

在轉換過程中,首先定義了一個StringBuilder對象,這主要是處於效能上的考慮;接著遍曆MD5雜湊值中的每個位元組,並使用String.Format方法直接將位元組轉換成16進位格式的字串,最後輸出結果字串即可。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.