All articles(网络文学目录) All Pictures(图片目录) All Softwares(软件目录)

 
关于.NET中MD5加密与ASP中MD5加密值不同的解决办法_[Asp.Net教程]

Writer: delv Article type: Programming skills(编程技巧) Time: 2014/1/23 3:13:41 Browse times: 346 Comment times: 0

关于.NET中MD5加密与ASP中MD5加密值不同的解决办法_[Asp.Net教程]


Head photo

Go homepage
Upload pictures
Write articles

关于.NET中MD5加密与ASP中MD5加密值不同的解决办法_[Asp.Net教程]

问题:正在做一个ASP到ASP.NET的商城改版,原来的注册用户需要保留,原来的用户密码是ASP的MD5,32位加密,记得ASP的MD5与ASP.NET的MD5加密结果并不相等,于是试了下:
原来用的一个MD5加密方法:
///


/// MD5加密算法
///

/// 要加密的字符串
/// md5加密结果
public static string Getmd5(string md5str)
{
byte[] data;
string ret = "";
data = System.Text.Encoding.UTF8.GetBytes(md5str);
MD5CryptoServiceProvider MD5OBJ = new MD5CryptoServiceProvider();
byte[] md5byte = MD5OBJ.ComputeHash(data);
for (int i = 0; i < md5byte.Length; i++)
{
ret += md5byte[i].ToString("x").PadLeft(2, '0');
}
return ret;
}

后来无意中发现有更简单的实现方法
///


/// MD5加密算法
///

/// 要加密的字符串
/// md5加密结果
public static string GetMd5(string md5str)
{
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(md5str, "MD5");
}

用第二种方法输出"admin"的MD5加密结果为:
21232F297A57A5A743894A0E4A801FC3
与ASP MD5加密的16和32位加密结果比较:
16位加密(7a57a5a743894a0e)
32位加密(21232f297a57a5a743894a0e4a801fc3)

发现与32位加密结果相同,只是字母大小写不同,16位加密结果只是从32位加密结果中取了中间16个,于是:
///


/// ASP MD5加密算法
///

/// 要加密的字符串
/// 16还是32位加密
/// Asp md5加密结果
public static string GetAspMd5(string md5str,int type)
{
if (type == "16")
{
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(md5str, "MD5").Substring(8, 16).ToLower();
}
else if (type=="32")
{
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(md5str, "MD5").ToLower();
}
return "";
}
上面一个方法实现了在.NET里的ASP MD5加密结果。

来源:fantaohaoyou的blog





There are 0 records,
Comment:
Must be registered users to comment(必须是注册用户才能发表评论)

Disclaimer Privacy Policy About us Site Map
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.