在.net中实现与ASP完全兼容的MD5算法(包括中文字符)

来源:互联网 发布:暴走鞋淘宝 编辑:程序博客网 时间:2024/05/08 07:46

在.net中实现与ASP完全兼容的MD5算法(包括中文字符)
在.net中,由于.net framework 封装了常见的加密算法,因此实现标准的MD5算法只需要短短几行代码即可实现:

 public string Md5(string strPassword)
  {
  
     MD5CryptoServiceProvider hashmd5;
  hashmd5 = new MD5CryptoServiceProvider();
    return BitConverter.ToString(hashmd5.ComputeHash(Encoding.Default.GetBytes(strPassword))).Replace("-","").ToLower();
   }

,但是当加密字符串含有中文或者其它双字节字符时,这种算法的结果与目前网上流行的ASP写的MD5算法的结果却不一致,这主要是由于目前网上流行的ASP写的MD5加密算法,存在一个缺陷,它使用了mid函数,取出的是“字符”,而正确的做法应该是取出字节,因此当加密字符串有双字节字符时,结果会与标准的MD5算法不一致.。但是由于在ASP向ASP.net的系统进行升级的过程中,已经向数据库内写入了大量以前ASP算法加密的密码,为了使新系统能够与原来的系统完全兼容,因此只有在.net 环境下实现与原来ASP算法完全一致的MD5算法。