Md5Crypt.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using System;
  2. using System.IO;
  3. using System.Security.Cryptography;
  4. using System.Text;
  5. namespace HaBookCms.Common.CryptHelper
  6. {
  7. public class Md5Crypt
  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. {
  20. var result = md5.ComputeHash(Encoding.UTF8.GetBytes(input));
  21. var strResult = BitConverter.ToString(result);
  22. strResult = strResult.Replace("-", "");
  23. if (half)//16位MD5加密(取32位加密的9~25字符)
  24. {
  25. strResult = strResult?.Substring(8, 16);
  26. }
  27. return strResult;
  28. }
  29. }
  30. #endregion
  31. /// <summary>
  32. /// MD5加密
  33. /// </summary>
  34. /// <param name="strPwd">加密的字符串</param>
  35. /// <returns></returns>
  36. public static string Encrypt(string strPwd)
  37. {
  38. MD5 md5 = new MD5CryptoServiceProvider();
  39. byte[] data = System.Text.Encoding.Default.GetBytes(strPwd);
  40. byte[] result = md5.ComputeHash(data);
  41. string ret = "";
  42. for (int i = 0; i < result.Length; i++)
  43. ret += result[i].ToString("x").PadLeft(2, '0');
  44. return ret;
  45. }
  46. public static string GetMd5String(string str)
  47. {
  48. MD5 md5 = MD5.Create();
  49. byte[] data = Encoding.UTF8.GetBytes(str);
  50. byte[] enData = md5.ComputeHash(data);
  51. return GetbyteToString(enData);
  52. }
  53. public static string GetMD5String(string str, HashAlgorithm hash)
  54. {
  55. byte[] data = Encoding.UTF8.GetBytes(str);
  56. byte[] data2 = hash.ComputeHash(data);
  57. return GetbyteToString(data2);
  58. }
  59. public static string GetMD5FromFile(string path)
  60. {
  61. MD5 md5 = MD5.Create();
  62. if (!File.Exists(path))
  63. {
  64. return "";
  65. }
  66. FileStream stream = File.OpenRead(path);
  67. byte[] data2 = md5.ComputeHash(stream);
  68. return GetbyteToString(data2);
  69. //return BitConverter.ToString(data2).Replace("-", "").ToLower();
  70. }
  71. private static string GetbyteToString(byte[] data)
  72. {
  73. StringBuilder sb = new StringBuilder();
  74. for (int i = 0; i < data.Length; i++)
  75. {
  76. sb.Append(data[i].ToString("x2"));
  77. }
  78. return sb.ToString();
  79. }
  80. }
  81. }