下面这段复制于msdn,它演示了如何进行加密以及对字串进行密码验证的过程。
通常我们在开发过程中,对新建立用户的密码进行MD5加密后存储;而后,用户登陆时,把用户输入的密码再次进行MD5加密后和数据库中存储的加密密码对比,以确认用户身份。
需要注意的是:MD5加密不可逆(解密)。
通常我们在开发过程中,对新建立用户的密码进行MD5加密后存储;而后,用户登陆时,把用户输入的密码再次进行MD5加密后和数据库中存储的加密密码对比,以确认用户身份。
需要注意的是:MD5加密不可逆(解密)。
using
System;
using System.Security.Cryptography;
using System.Text;
class Example
... {
// Hash an input string and return the hash as
// a 32 character hexadecimal string.
static string getMd5Hash(string input)
...{
// Create a new instance of the MD5CryptoServiceProvider object.
MD5 md5Hasher = MD5.Create();
// Convert the input string to a byte array and compute the hash.
byte[] data = md5Hasher.ComputeHash(Encoding.Default.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(string input, string hash)
...{
// Hash the input.
string hashOfInput = getMd5Hash(input);
// Create a StringComparer an comare the hashes.
StringComparer comparer = StringComparer.OrdinalIgnoreCase;
if (0 == comparer.Compare(hashOfInput, hash))
...{
return true;
}
else
...{
return false;
}
}
static void Main()
...{
string source = "Hello World!";
string hash = getMd5Hash(source);
Console.WriteLine("The MD5 hash of " + source + " is: " + hash + ".");
Console.WriteLine("Verifying the hash...");
if (verifyMd5Hash(source, hash))
...{
Console.WriteLine("The hashes are the same.");
}
else
...{
Console.WriteLine("The hashes are not same.");
}
}
}
// This code example produces the following output:
//
// The MD5 hash of Hello World! is: ed076287532e86365e841e92bfc50d8c.
// Verifying the hash...
// The hashes are the same.
using System.Security.Cryptography;
using System.Text;
class Example
... {
// Hash an input string and return the hash as
// a 32 character hexadecimal string.
static string getMd5Hash(string input)
...{
// Create a new instance of the MD5CryptoServiceProvider object.
MD5 md5Hasher = MD5.Create();
// Convert the input string to a byte array and compute the hash.
byte[] data = md5Hasher.ComputeHash(Encoding.Default.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(string input, string hash)
...{
// Hash the input.
string hashOfInput = getMd5Hash(input);
// Create a StringComparer an comare the hashes.
StringComparer comparer = StringComparer.OrdinalIgnoreCase;
if (0 == comparer.Compare(hashOfInput, hash))
...{
return true;
}
else
...{
return false;
}
}
static void Main()
...{
string source = "Hello World!";
string hash = getMd5Hash(source);
Console.WriteLine("The MD5 hash of " + source + " is: " + hash + ".");
Console.WriteLine("Verifying the hash...");
if (verifyMd5Hash(source, hash))
...{
Console.WriteLine("The hashes are the same.");
}
else
...{
Console.WriteLine("The hashes are not same.");
}
}
}
// This code example produces the following output:
//
// The MD5 hash of Hello World! is: ed076287532e86365e841e92bfc50d8c.
// Verifying the hash...
// The hashes are the same.