C# MD5算法 16 32 大小写

str.ToString("X2"):

X为十六进制,

2为每次都是两位数

第一次用的s[i].ToString("X"),出错找了下是少了1位,03只输出了3,改为s[i].ToString("X2");

 1         /// <summary>
 2         /// 字符串转MD5
 3         /// </summary>
 4         /// <param name="str">需要加密的字符串</param>
 5         /// <param name="md5_16">需不需要返回16位,默认32位</param>
 6         /// <param name="capital">需不需要返回大写,默认小写</param>
 7         /// <returns></returns>
 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         }

 

上一篇:POI Excel导入日期时,不同日期格式出现的问题


下一篇:初识JavaScript(day04)