/** *┌──────────────────────────────────────────────────────────────┐ *│ 描 述:日志相关的工具类 *│ 作 者:执笔小白 *│ 版 本:1.0 *│ 创建时间:2020-6-13 15:40:56 *└──────────────────────────────────────────────────────────────┘ *┌──────────────────────────────────────────────────────────────┐ *│ 命名空间: WMSTOMESTT *│ 类 名:ETools *└──────────────────────────────────────────────────────────────┘ */ using System.IO; using System.Security.Cryptography; using System.Text; namespace Fa_Xiaomi_N801A.MainForm.EDEHelper { public class Md5Helper { /// /// 计算字符串的MD5 /// /// 需要计算的字符串 /// 需不需要返回16位,默认32位 /// 需不需要返回大写,默认小写 /// public static string GetMD5Value_String(string str = "", bool md5_16 = false, bool capital = false) { string pwd = ""; MD5 md5 = MD5.Create(); //实例化一个md5对象 byte[] s = md5.ComputeHash(UTF8Encoding.UTF8.GetBytes(str)); // 大写 if (capital) { for (int i = 0; i < s.Length; i++) { // --X为十六进制,2为每次都是两位数 pwd = pwd + s[i].ToString("X2"); // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母 } } else { for (int i = 0; i < s.Length; i++) // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 { pwd = pwd + s[i].ToString("X2").ToLower(); } } // 16位 if (md5_16) { pwd = pwd.Substring(4, 16); } return pwd; } /// /// 计算文件的MD5值 /// /// 需要计算md5值的文件的路径 /// 需不需要返回16位,默认32位 /// 需不需要返回大写,默认小写 /// public static string GetMD5Value_File(string fileName = "", bool md5_16 = false, bool capital = false) { string pwd = ""; MD5 md5 = MD5.Create(); //实例化一个md5对象 using (FileStream file = new FileStream(fileName, System.IO.FileMode.Open)) { byte[] s = md5.ComputeHash(file); file.Close(); // 大写 if (capital) { for (int i = 0; i < s.Length; i++) { // --X为十六进制,2为每次都是两位数 pwd = pwd + s[i].ToString("X2"); // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母 } } else { for (int i = 0; i < s.Length; i++) // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 { pwd = pwd + s[i].ToString("X2").ToLower(); } } // 16位 if (md5_16) { pwd = pwd.Substring(4, 16); } } return pwd; } } }