标签:style blog ar color os sp for on div
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 */
标签:style blog ar color os sp for on div
原文地址:http://www.cnblogs.com/leijiangtao/p/4158428.html