C#創(chuàng)建文件的實戰(zhàn)應用示例解析
由于Internet的開放性,C#創(chuàng)建文件的應用很廣泛,如在任何文件在傳輸過程中都可能受到篡改,而且傳輸過程的不確定性,使得我們?nèi)狈τ行У姆椒ūWC傳輸文件的安全。那么如何找到解決問題的方法呢?這里我們來談談使用C#創(chuàng)建文件的應用。
為了避免上述情況,最普遍的做法是隨傳輸文件提供一個C#創(chuàng)建文件中的驗證碼,用戶在收到文件后,通過重新計算文件驗證碼并與原始驗證碼比較,如果不匹配則表示文件在傳輸過程中發(fā)生了改變。下面,筆者就使用C#給大家演示一下具體的實現(xiàn)過程。
C#創(chuàng)建文件應用一、創(chuàng)建FileStream
在構建文件驗證碼之前,首先需要加載文件,這就要用到.Net framework的FileStream類。在.Net framework下,文件都表示為一個Stream,即字節(jié)序列的抽象概念。而所有涉及文件的讀寫操作都通過Stream類的屬性和方法實現(xiàn)。下面,就是具體的實現(xiàn)代碼:
- FileStream fst= new FileStream(
- txtFile.Text,FileMode.Open,
- FileAccess.Read, FileShare.Read, 8192);
這里使用了FileStream構建函數(shù)的一種重載方法,需要提一下的是最后一個參數(shù)值8192,該參數(shù)值定義的是緩沖區(qū)的大小,即當文件大于8K時,以8K為單位,對文件進行分段讀取,以提高讀取文件的性能。
C#創(chuàng)建文件二、創(chuàng)建MD5對象
在成功創(chuàng)建FileStream對象之下,接下來就可以使用MD5類計算該對象的哈希值了。這個實現(xiàn)過程非常簡單,只要先聲明一個 MD5CryptoServiceProvider實例,然后使用ComputeHash方法完成計算過程,最后通過Hash屬性就可以得到計算好的字節(jié)數(shù)組了。
- ……
- MD5CryptoServiceProvider md5=
- new MD5CryptoServiceProvider();
- FileStream fst= new FileStream(txtFile.Text,FileMode.Open,
- FileAccess.Read, FileShare.Read, 8192);
- md5.ComputeHash(fst);
- byte[] hash=md5.Hash;
- ……
C#創(chuàng)建文件三、轉換驗證碼字符串
由于MD5哈希算法返回的是一個字節(jié)數(shù)據(jù),因此需要轉換成字符串。以下就是具體實現(xiàn)的代碼。
- ……
- byte[] hash=md5.Hash;
- StringBuilder sb=new StringBuilder();
- foreach(byte byt in hash)
- {
- sb.Append(String.Format("{0:X1}", byt));
- }
- TextBox1.Text = sb.ToString();
- ……
在轉換過程中,首先定義了一個StringBuilder對象,這主要是處于性能上的考慮;接著遍歷MD5哈希值中的每個字節(jié),并使用String.Format方法直接將字節(jié)轉換成16進制格式的字符串,最后輸出結果字符串即可。
注:通過本例生成的MD5驗證碼與同類MD5驗證碼校驗工具在算法上完全一致,因此完全適用于實際應用場合。
C#創(chuàng)建文件的應用有很多,那么這次的應用解決是不是很巧妙呢?希望對你了解和學習C#創(chuàng)建文件方面有所幫助。
【編輯推薦】