md5类

using System;

using System.Security.Cryptography;

using System.Text;



namespace MD5Sample

{

    class Program

    {

        static void Main(string[] args)

        {

            string source = "Hello World!";

            using (MD5 md5Hash = MD5.Create())

            {

                string hash = GetMd5Hash(md5Hash, source);



                Console.WriteLine("The MD5 hash of " + source + " is: " + hash + ".");



                Console.WriteLine("Verifying the hash...");



                if (VerifyMd5Hash(md5Hash, source, hash))

                {

                    Console.WriteLine("The hashes are the same.");

                }

                else

                {

                    Console.WriteLine("The hashes are not same.");

                }

            }

            Console.ReadLine();





        }

        static string GetMd5Hash(MD5 md5Hash, string input)

        {



            // Convert the input string to a byte array and compute the hash.

            byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));



            // Create a new Stringbuilder to collect the bytes

            // and create a string.

            StringBuilder sBuilder = new StringBuilder();



            // Loop through each byte of the hashed data 

            // and format each one as a hexadecimal string.

            for (int i = 0; i < data.Length; i++)

            {

                sBuilder.Append(data[i].ToString("x2"));

            }



            // Return the hexadecimal string.

            return sBuilder.ToString();

        }



        // Verify a hash against a string.

        static bool VerifyMd5Hash(MD5 md5Hash, string input, string hash)

        {

            // Hash the input.

            string hashOfInput = GetMd5Hash(md5Hash, input);



            // Create a StringComparer an compare the hashes.

            StringComparer comparer = StringComparer.OrdinalIgnoreCase;



            if (0 == comparer.Compare(hashOfInput, hash))

            {

                return true;

            }

            else

            {

                return false;

            }

        }



    }

}



// This code example produces the following output:

//

// The MD5 hash of Hello World! is: ed076287532e86365e841e92bfc50d8c.

// Verifying the hash...

// The hashes are the same.

/*System.Security.Cryptography

public abstract class MD5 : HashAlgorithm

public static MD5 Create()

Create()创建 MD5 哈希算法的默认实现的实例。

public byte[] ComputeHash(byte[] buffer)

public virtual byte[] GetBytes(string s)

Encoding.ASCII.GetBytes(inputString)用于以ASCII方式将一个字符串转换成一个字节数组, 

原因是ComputeHash方法只接收Byte[]参数,后面的内容就是将加密后的Byte[]连成一个字符串, 

AppendFormat中的格式字符串{0:x2}是指将数组中每一个字符格式化为十六进制,精度为2 */

 

你可能感兴趣的:(MD5)