C# MD5算法 16 32 大小写
str.ToString("X2"):
X为十六进制,
2为每次都是两位数
第一次用的s[i].ToString("X"),出错找了下是少了1位,03只输出了3,改为s[i].ToString("X2");
1 ///2 /// 字符串转MD5 3 /// 4 /// 需要加密的字符串 5 /// 需不需要返回16位,默认32位 6 /// 需不需要返回大写,默认小写 7 /// 8 public static string StringToMD5(string str = "", bool md5_16=false, bool capital = false) 9 { 10 string pwd = ""; 11 MD5 md5 = MD5.Create(); //实例化一个md5对象 12 byte[] s = md5.ComputeHash(UTF8Encoding.UTF8.GetBytes(str)); 13 14 // 大写 15 if (capital) 16 { 17 for (int i = 0; i < s.Length; i++) 18 { 19 // --X为十六进制,2为每次都是两位数 20 pwd = pwd + s[i].ToString("X2"); // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母 21 } 22 } 23 else 24 { 25 for (int i = 0; i < s.Length; i++) // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 26 { 27 pwd = pwd + s[i].ToString("X2").ToLower(); 28 } 29 } 30 31 // 16位 32 if (md5_16) 33 { 34 pwd = pwd.Substring(4, 16); 35 } 36 return pwd; 37 }