using NCC.Dependency; using System; using System.Reflection; using System.Security.Cryptography; using System.Text; namespace NCC.DataEncryption { /// /// MD5 加密 /// [SuppressSniffer] public static unsafe class MD5Encryption { /// /// 字符串 MD5 比较 /// /// 加密文本 /// MD5 字符串 /// 是否输出大写加密,默认 false /// bool public static bool Compare(string text, string hash, bool uppercase = false) { var hashOfInput = Encrypt(text, uppercase); return hash.Equals(hashOfInput, StringComparison.OrdinalIgnoreCase); } /// /// MD5 加密 /// /// 加密文本 /// 是否输出大写加密,默认 false /// public static string Encrypt(string text, bool uppercase = false) { using var md5Hash = MD5.Create(); var data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(text)); var stringBuilder = new StringBuilder(); for (var i = 0; i < data.Length; i++) { stringBuilder.Append(data[i].ToString("x2")); } var hash = stringBuilder.ToString(); return !uppercase ? hash : hash.ToUpper(); } } }