加密函数如下:
private string Encrypt(string s)
{
MD5CryptoServiceProvider hashMD5=new MD5CryptoServiceProvider();
s=ASCIIEncoding.ASCII.GetString(hashMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(s)));
return s;
}
在VS2003下保存在数据库的密码,在软件升级到VS2005后,登陆提示密码错.
跟踪发现,好象相同密码加密后字符串,也有点不一样,是什么原因造成的? 怎么办??好着急,请各位大侠帮忙!!!!
private string Encrypt(string s)
{
MD5CryptoServiceProvider hashMD5=new MD5CryptoServiceProvider();
s=ASCIIEncoding.ASCII.GetString(hashMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(s)));
return s;
}
在VS2003下保存在数据库的密码,在软件升级到VS2005后,登陆提示密码错.
跟踪发现,好象相同密码加密后字符串,也有点不一样,是什么原因造成的? 怎么办??好着急,请各位大侠帮忙!!!!
不知道,帮你Up一下
ASCIIEncoding.ASCII.GetBytes(s);
ASCIIEncoding.ASCII.GetBytes("1");
2005下结果为byte[]{49}
2003下结果为byte[]{1,0}
VS2005:?I7??nx???????2
请各位帮我分析一下,是什么原因造成的?? 是不是那儿设置有问题??
用的是WEB程序.
/// <summary>
/// MD5加密
/// </summary>
/// <param name="InputString">要加密的字串</param>
/// <returns>密文</returns>
public static string Md5hash_String(string InputString)
{
InputString = Md5hash_String(InputString, "MD5");
return InputString;
}
/// <summary>
/// SHA1,MD5加密
/// </summary>
/// <param name="s">要加密的字符串</param>
/// <param name="format">加密格式 MD5 或 SHA1</param>
/// <returns>返回加密后的字串</returns>
public static string Md5hash_String(string InputString,string format)
{
if(format=="SHA1")
{
InputString=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(InputString,"SHA1");
}
else if(format=="MD5")
{
InputString=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(InputString,"MD5");
}
return InputString;
}
#endregion随便说,你那个根本不是MD5加密,是加密以后在改一下密文。
s = BitConverter.ToString(hashMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(s))).Replace("-", "");
return s;改成这样看看
是你程序有问题
s=ASCIIEncoding.ASCII.GetString(hashMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(s)));中ASCIIEncoding.ASCII.GetBytes(s);语句
在2003和2005中执行所返回的结果不一样
哪有你这样编成字符串的啊,用Convert.ToBase64
偶用这种方法获得字符串
C#的Md5设计应该是这样的.
string n=fgdkdlfjlgd ;string md5=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(n,"md5").ToLower().Substring(8,16)这个是16位的.
32位就就不用Substring了s楼主的还不知道是什么Md5.
FormsAuthentication.HashPasswordForStoringInConfigFile 是用的utf8编码