using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace TEAMModelOS.SDK { public class Md5Hash { #region MD5加密字符串处理 /// /// MD5加密字符串处理 /// /// 加密是16位还是32位;如果为true为16位 /// 待加密码字符串 /// public static string Encrypt(string input, bool half) { using var md5 = MD5.Create(); var result = md5.ComputeHash(Encoding.UTF8.GetBytes(input)); var strResult = BitConverter.ToString(result); strResult = strResult.Replace("-", ""); if (half)//16位MD5加密(取32位加密的9~25字符) { strResult = strResult?.Substring(8, 16); } return strResult; } #endregion /// /// MD5加密 /// /// 加密的字符串 /// public static string Encrypt(string strPwd) { using var md5 = MD5.Create(); byte[] data = System.Text.Encoding.Default.GetBytes(strPwd); byte[] result = md5.ComputeHash(data); string ret = ""; for (int i = 0; i < result.Length; i++) ret += result[i].ToString("x").PadLeft(2, '0'); return ret; } public static string GetMd5Str_16X(string ConvertString) //16位小写         { using var md5 = MD5.Create(); string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)), 4, 8); t2 = t2.Replace("-", ""); t2 = t2.ToLower(); return t2; } public static string GetMd5String(string str) { MD5 md5 = MD5.Create(); byte[] data = Encoding.UTF8.GetBytes(str); byte[] enData = md5.ComputeHash(data); return GetbyteToString(enData); } public static string GetMD5String(string str, HashAlgorithm hash) { byte[] data = Encoding.UTF8.GetBytes(str); byte[] data2 = hash.ComputeHash(data); return GetbyteToString(data2); } public static string GetMD5FromFile(string path) { MD5 md5 = MD5.Create(); if (!File.Exists(path)) { return ""; } FileStream stream = File.OpenRead(path); byte[] data2 = md5.ComputeHash(stream); return GetbyteToString(data2); //return BitConverter.ToString(data2).Replace("-", "").ToLower(); } public static string GetbyteToString(byte[] data) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < data.Length; i++) { sb.Append(data[i].ToString("x2")); } return sb.ToString(); } } }