Calculate a MD5 hash from a string

后端 未结 16 2135
独厮守ぢ
独厮守ぢ 2020-11-28 21:06

I use the following C# code to calculate a MD5 hash from a string. It works well and generates a 32-character hex string like this: 900150983cd24fb0d6963f7d28e17f72

16条回答
  •  夕颜
    夕颜 (楼主)
    2020-11-28 21:57

    Support string and file stream.

    examples

    string hashString = EasyMD5.Hash("My String");
    
    string hashFile = EasyMD5.Hash(System.IO.File.OpenRead("myFile.txt"));
    

    -

       class EasyMD5
            {
                private static string GetMd5Hash(byte[] data)
                {
                    StringBuilder sBuilder = new StringBuilder();
                    for (int i = 0; i < data.Length; i++)
                        sBuilder.Append(data[i].ToString("x2"));
                    return sBuilder.ToString();
                }
    
                private static bool VerifyMd5Hash(byte[] data, string hash)
                {
                    return 0 == StringComparer.OrdinalIgnoreCase.Compare(GetMd5Hash(data), hash);
                }
    
                public static string Hash(string data)
                {
                    using (var md5 = MD5.Create())
                        return GetMd5Hash(md5.ComputeHash(Encoding.UTF8.GetBytes(data)));
                }
                public static string Hash(FileStream data)
                {
                    using (var md5 = MD5.Create())
                        return GetMd5Hash(md5.ComputeHash(data));
                }
    
                public static bool Verify(string data, string hash)
                {
                    using (var md5 = MD5.Create())
                        return VerifyMd5Hash(md5.ComputeHash(Encoding.UTF8.GetBytes(data)), hash);
                }
    
                public static bool Verify(FileStream data, string hash)
                {
                    using (var md5 = MD5.Create())
                        return VerifyMd5Hash(md5.ComputeHash(data), hash);
                }
            }
    

提交回复
热议问题