MD5.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using System;
  2. using System.IO;
  3. using System.Security.Cryptography;
  4. using System.Text;
  5. /// <summary>
  6. /// MD5相关工具集
  7. /// </summary>
  8. public partial class Utils
  9. {
  10. /// <summary>
  11. /// 计算内存数据MD5值
  12. /// </summary>
  13. /// <returns>MD5值</returns>
  14. /// <param name="buffer">内存数据</param>
  15. public static string Md5(byte[] buffer)
  16. {
  17. MD5 md5 = new MD5CryptoServiceProvider();
  18. byte[] retVal = md5.ComputeHash(buffer);
  19. StringBuilder sb = new StringBuilder();
  20. for (int i = 0; i < retVal.Length; i++)
  21. {
  22. sb.Append(retVal[i].ToString("x2"));
  23. }
  24. return sb.ToString();
  25. }
  26. /// <summary>
  27. /// 计算字符串的MD5值
  28. /// </summary>
  29. /// <param name="source">源串</param>
  30. /// <returns>换算后的字符串</returns>
  31. public static string Md5(string source)
  32. {
  33. MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
  34. byte[] data = Encoding.UTF8.GetBytes(source);
  35. byte[] md5Data = md5.ComputeHash(data, 0, data.Length);
  36. md5.Clear();
  37. string destString = "";
  38. for (int i = 0; i < md5Data.Length; i++)
  39. {
  40. destString += Convert.ToString(md5Data[i], 16).PadLeft(2, '0');
  41. }
  42. destString = destString.PadLeft(32, '0');
  43. return destString;
  44. }
  45. /// <summary>
  46. /// 计算文件的MD5值
  47. /// </summary>
  48. /// <param name="file">文件的绝对路径</param>
  49. /// <returns>md5值</returns>
  50. public static string Md5File(string file)
  51. {
  52. try
  53. {
  54. FileStream fs = new FileStream(file, FileMode.Open);
  55. MD5 md5 = new MD5CryptoServiceProvider();
  56. byte[] retVal = md5.ComputeHash(fs);
  57. fs.Close();
  58. StringBuilder sb = new StringBuilder();
  59. for (int i = 0; i < retVal.Length; i++)
  60. {
  61. sb.Append(retVal[i].ToString("x2"));
  62. }
  63. return sb.ToString();
  64. }
  65. catch (Exception ex)
  66. {
  67. throw new Exception("Md5File() fail, INFO:" + ex.Message);
  68. }
  69. }
  70. }