C# 獲取文件MD5與SHA1。本站提示廣大學習愛好者:(C# 獲取文件MD5與SHA1)文章只能為提供參考,不一定能成為您想要的結果。以下是C# 獲取文件MD5與SHA1正文
之前剛開始學習編程的時候,總想著自己寫一些小軟件小工具。
而這個就是經典的文件MD5校驗,順便加上了一個SHA1。
在網絡上下載一些東西時,會有作者提供MD5值。
它的作用就在於我們可以在下載該軟件後,對下載回來的文件做一次MD5校驗,以確保我們獲得的文件與該站點提供的文件為同一文件。
於是就需要一個MD5校驗工具,那麼就去百度上找,但是國內的下載站就不用說了...捆綁的東西防不勝防。
所以,作為一個程序員,就自己來寫一個吧。
分析這個小工具的主要需求就是
1.根據路徑找到文件
2.獲取MD5
3.獲取SHA1
非常簡單的一個小工具,
第一個方法直接使用 FileInfo 類構造函數傳入路徑就可以了,因為是做控制台可以直接拖拽文件,這一點還是很方便的。
需要注意的是路徑中有空格會報錯。
該方法中 s 代表傳入的文件路徑
1 static void GetFile(string s) 2 { 3 try 4 { 5 FileInfo fi = new FileInfo(s); 6 Console.WriteLine("文件路徑:{0}", s); 7 Console.WriteLine("文件名稱:{0}", fi.Name.ToString()); 8 Console.WriteLine("文件類型:{0}", fi.Extension.ToString()); 9 Console.WriteLine("文件大小:{0} K", fi.Length / 1024); 10 Console.WriteLine("文件創建時間:{0}", fi.CreationTime.ToString()); 11 Console.WriteLine("上次訪問時間:{0}", fi.LastAccessTime.ToString()); 12 Console.WriteLine("上次寫入時間:{0}", fi.LastWriteTime.ToString()); 13 } 14 catch (Exception ex) 15 { 16 Console.WriteLine(ex.Message); 17 } 18 }
第二個方法獲得MD5值,該方法中 s 代表傳入的文件路徑
MD5將整個文件當作一個大文本信息,通過其不可逆的字符串變換算法,產生了這個唯一的MD5信息摘要。
1 static void GetMD5(string s) 2 { 3 try 4 { 5 FileStream file = new FileStream(s,FileMode.Open); 6 MD5 md5 = new MD5CryptoServiceProvider(); 7 byte[] retval = md5.ComputeHash(file); 8 file.Close(); 9 10 StringBuilder sc = new StringBuilder(); 11 for (int i = 0 ; i<retval.Length ; i++ ) 12 { 13 sc.Append(retval[i].ToString("x2")); 14 } 15 Console.WriteLine("文件MD5:{0}",sc); 16 } 17 catch(Exception ex) 18 { 19 Console.WriteLine(ex.Message); 20 } 21 }
第三個方法,獲得SHA1值,該方法中 s 代表傳入的文件路徑
SHA1名為安全哈希算法,對於長度小於2^64位的消息,SHA1會產生一個160位的消息摘要。
SHA1有如下特性:不可以從消息摘要中復原信息;兩個不同的消息不會產生同樣的消息摘要,(但會有1x10 ^ 48分之一的機率出現相同的消息摘要,一般使用時忽略)。
1 static void GetSHA1(string s) 2 { 3 try 4 { 5 FileStream file = new FileStream(s, FileMode.Open); 6 SHA1 sha1 = new SHA1CryptoServiceProvider(); 7 byte[] retval = sha1.ComputeHash(file); 8 file.Close(); 9 10 StringBuilder sc = new StringBuilder(); 11 for (int i = 0; i < retval.Length; i++) 12 { 13 sc.Append(retval[i].ToString("x2")); 14 } 15 Console.WriteLine("文件SHA1:{0}", sc); 16 } 17 catch (Exception ex) 18 { 19 Console.WriteLine(ex.Message); 20 } 21 }
放出我的成品,用的是.NET Framework 4.0,各位電腦上應該都有。
(密碼:XVi7MD)
https://share.weiyun.com/98d8c10869e693961fb0df10c9202624
轉載請聯系