标签:
public static string GetMD5(string str) //自己写的 { //创建MD5对象 MD5 md5= MD5.Create(); //开始加密 //需要将字符串转换成字节数组 byte[] buffer = Encoding.Default.GetBytes(str); byte[] MD5Buffer = md5.ComputeHash(buffer); //将字符数组转换成字符串 //字符数组-------字符串 //第一种:将字节数组中每个元素按照指定的编码格式解析成字符串
//MD5str = Encoding.Default.GetString(MD5Buffer);//此实例中无法将字符数组转换为字符串 //第二种:直接将数组ToString() //将字节数组中的每个元素ToString() string MD5str=string.Empty; for (int i = 0; i < MD5Buffer.Length; i++) { MD5str += MD5Buffer[i].ToString("x2");//转换成32进制 } return MD5str; }
using System; //MSDN库的 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."); } } } 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.
标签:
原文地址:http://www.cnblogs.com/souliid/p/5656188.html