原理:
哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符串。加密哈希函数有这样一个属性:在计算上不大可能找到散列为相同的值的两个不同的输入;也就是说,两组数据的哈希值仅在对应的数据也匹配时才会匹配。数据的少量更改会在哈希值中产生不可预知的大量更改。
MD5CryptoServiceProvider 类的哈希大小为 128 位。
MD5CryptoServiceProvider 类的 ComputeHash 方法将哈希作为 16 字节的数组返回。请注意,某些 MD5 实现会生成 32 字符的十六进制格式哈希。若要与此类实现进行互操作,请将 ComputeHash 方法的返回值格式化为十六进制值。
实现:
Code
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Security;
using System.Security.Cryptography;
namespace Test_WebApp
{
public class Cliper
{
//public static byte[] MD5hash(byte[] pData)
//{
// // This is one implementation of the abstract class MD5.
// MD5 vMd5 = new MD5CryptoServiceProvider();
// byte[] vResult = vMd5.ComputeHash(pData);
// return vResult;
//}
public static string MD5hash(byte[] pData)
{
// This is one implementation of the abstract class MD5.
MD5 vMd5 = new MD5CryptoServiceProvider();
byte[] vResult = vMd5.ComputeHash(pData);
return BitConverter.ToString(vResult);
}
public static bool MD5hashComppare(byte[] pData1, byte[] pData2)
{
StringComparer vComparer = StringComparer.OrdinalIgnoreCase;
string vHash1 = MD5hash(pData1);
string vHash2 = MD5hash(pData2);
return vComparer.Compare(vHash1, vHash2) == 0 ? true : false;
}
}
}