标签:
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