Md5Hash.cs 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using System;
  2. using System.IO;
  3. using System.Security.Cryptography;
  4. using System.Text;
  5. namespace TEAMModelOS.SDK
  6. {
  7. public class Md5Hash
  8. {
  9. #region MD5加密字符串处理
  10. /// <summary>
  11. /// MD5加密字符串处理
  12. /// </summary>
  13. /// <param name="half">加密是16位还是32位;如果为true为16位</param>
  14. /// <param name="input">待加密码字符串</param>
  15. /// <returns></returns>
  16. public static string Encrypt(string input, bool half)
  17. {
  18. using var md5 = MD5.Create();
  19. var result = md5.ComputeHash(Encoding.UTF8.GetBytes(input));
  20. var strResult = BitConverter.ToString(result);
  21. strResult = strResult.Replace("-", "");
  22. if (half)//16位MD5加密(取32位加密的9~25字符)
  23. {
  24. strResult = strResult?.Substring(8, 16);
  25. }
  26. return strResult;
  27. }
  28. #endregion
  29. /// <summary>
  30. /// MD5加密
  31. /// </summary>
  32. /// <param name="strPwd">加密的字符串</param>
  33. /// <returns></returns>
  34. public static string Encrypt(string strPwd)
  35. {
  36. using var md5 = MD5.Create();
  37. byte[] data = System.Text.Encoding.Default.GetBytes(strPwd);
  38. byte[] result = md5.ComputeHash(data);
  39. string ret = "";
  40. for (int i = 0; i < result.Length; i++)
  41. ret += result[i].ToString("x").PadLeft(2, '0');
  42. return ret;
  43. }
  44. public static string GetMd5Str_16X(string ConvertString) //16位小写
  45.         {
  46. using var md5 = MD5.Create();
  47. string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)), 4, 8);
  48. t2 = t2.Replace("-", "");
  49. t2 = t2.ToLower();
  50. return t2;
  51. }
  52. public static string GetMd5String(string str)
  53. {
  54. MD5 md5 = MD5.Create();
  55. byte[] data = Encoding.UTF8.GetBytes(str);
  56. byte[] enData = md5.ComputeHash(data);
  57. return GetbyteToString(enData);
  58. }
  59. public static string GetMD5String(string str, HashAlgorithm hash)
  60. {
  61. byte[] data = Encoding.UTF8.GetBytes(str);
  62. byte[] data2 = hash.ComputeHash(data);
  63. return GetbyteToString(data2);
  64. }
  65. public static string GetMD5FromFile(string path)
  66. {
  67. MD5 md5 = MD5.Create();
  68. if (!File.Exists(path))
  69. {
  70. return "";
  71. }
  72. FileStream stream = File.OpenRead(path);
  73. byte[] data2 = md5.ComputeHash(stream);
  74. return GetbyteToString(data2);
  75. //return BitConverter.ToString(data2).Replace("-", "").ToLower();
  76. }
  77. public static string GetbyteToString(byte[] data)
  78. {
  79. StringBuilder sb = new StringBuilder();
  80. for (int i = 0; i < data.Length; i++)
  81. {
  82. sb.Append(data[i].ToString("x2"));
  83. }
  84. return sb.ToString();
  85. }
  86. }
  87. }