using System; using System.IO; using System.Text; namespace AlicizaX { public static partial class Utility { /// /// 哈希计算相关的实用函数。 /// public static partial class Hash { /// /// Md5 /// public static class MD5 { private static readonly System.Security.Cryptography.MD5 MD5Cryptography = System.Security.Cryptography.MD5.Create(); /// /// 获取字符串的Md5值 /// /// /// public static string Hash(string input) { var data = MD5Cryptography.ComputeHash(Encoding.UTF8.GetBytes(input)); return ToHash(data); } /// /// 获取流的Md5值 /// /// /// public static string Hash(Stream input) { var data = MD5Cryptography.ComputeHash(input); return ToHash(data); } /// /// 验证Md5值是否一致 /// /// /// /// public static bool IsVerify(string input, string hash) { var comparer = StringComparer.OrdinalIgnoreCase; return 0 == comparer.Compare(input, hash); } static string ToHash(byte[] data) { var sb = new StringBuilder(); foreach (var t in data) { sb.Append(t.ToString("x2")); } return sb.ToString(); } /// /// 获取指定文件路径的Md5值 /// /// /// public static string FileHash(string filePath) { using (FileStream file = new FileStream(filePath, FileMode.Open)) { return Hash(file); } } } } } }