MD5加密类,其实是封装了一个哈希算法。哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符。
MSDN上代码是这样写的:


1
static
string
GetMd5Hash(
string
input)
2 {
3 MD5 Md5 = MD5.Create(); // 实例一个对象
4 byte [] data = md5Hash.ComputerHash(system.text.Encoding.Default.GetBytes(input));
5 StringBuilder sBuilder = new StringBuilder();
6 for ( int i = 0 ;i < data.Length;i ++ )
7 {
8 sBuilder.Append(data[i].ToString( " X2 " ));
9 }
10 return sBuilder.ToString();
11 }
2 {
3 MD5 Md5 = MD5.Create(); // 实例一个对象
4 byte [] data = md5Hash.ComputerHash(system.text.Encoding.Default.GetBytes(input));
5 StringBuilder sBuilder = new StringBuilder();
6 for ( int i = 0 ;i < data.Length;i ++ )
7 {
8 sBuilder.Append(data[i].ToString( " X2 " ));
9 }
10 return sBuilder.ToString();
11 }
调用此方法可以取得加密后的结果。本想直接把byte[] data转换成string型的字符串,测试了一下,直接返回"System.Byte[]",所以正确的做法是一定要用for循环赋值。
MSDN备注:
哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符串。 加密哈希函数有这样一个属性:在计算上不大可能找到散列为相同的值的两个不同的输入;也就是说,两组数据的哈希值仅在对应的数据也匹配时才会匹配。 数据的少量更改会在哈希值中产生不可预知的大量更改。
MD5 算法的哈希值大小为 128 位。
MD5 类的 ComputeHash 方法将哈希作为 16 字节的数组返回。 请注意,某些 MD5 实现会生成 32 字符的十六进制格式哈希。 若要与此类实现进行互操作,请将 ComputeHash 方法的返回值格式化为十六进制值。