1 /// <summary> 2 /// MD5驗證函數 3 /// </summary> 4 /// <param name="fileName">文件的路徑</param> 5 /// <param name="blockletter">返回的MD5值是否爲大寫</param> 6 /// <returns></returns> 7 public static string GetMD5HashFromFile(string fileName,bool blockletter) 8 { 9 try 10 { 11 FileStream file = new FileStream(fileName, FileMode.Open); 12 System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); 13 byte[] retVal = md5.ComputeHash(file); 14 file.Close(); 15 16 StringBuilder sb = new StringBuilder(); 17 for (int i = 0; i < retVal.Length; i++) 18 { 19 if (blockletter) 20 sb.Append(retVal[i].ToString("X2")); 21 else 22 sb.Append(retVal[i].ToString("x2")); 23 } 24 return sb.ToString(); 25 } 26 catch (Exception ex) 27 { 28 return "文件讀取錯誤"; 29 } 30 } 31 /// <summary> 32 /// 計算SHA1值 33 /// </summary> 34 /// <param name="fileName">文件地址</param> 35 /// <param name="blockletter">是否輸出大寫</param> 36 /// <returns></returns> 37 public static string GetSHA1HashFromFile(string fileName, bool blockletter) 38 { 39 var tragetFile = new System.IO.FileStream(fileName, System.IO.FileMode.Open); 40 var sha1 = new System.Security.Cryptography.SHA1CryptoServiceProvider(); 41 byte[] hashbytes = sha1.ComputeHash(tragetFile); 42 tragetFile.Close(); 43 44 System.Text.StringBuilder sb = new System.Text.StringBuilder(); 45 for (int i = 0; i < hashbytes.Length; i++) 46 { 47 if (blockletter) //判斷輸出大小寫 48 sb.Append(hashbytes[i].ToString("X2")); 49 else 50 sb.Append(hashbytes[i].ToString("x2")); 51 } 52 return sb.ToString(); 53 }