您的位置:首页 > 其它

在.Net中实现Discuz论坛平台UCenter密码加密

2011-07-08 22:45 197 查看
最近做一个系统,需要用户在.Net中登录,而用户名和密码使用Discuz论坛中的信息(实际密码是保存在UCenter数据库中的)。研究了一下Discuz论坛,发现其并不是对用户密码直接进行MD5加密,而使用了另外的方式。
在用户注册时,对用户输入的密码进行MD5加密,然后生成一个随机数,把前面加密的结果和这个随机数(salt)组合在一起,再进行一次MD5加密,最终加密的结果:md5(md5(password).salt)。并且把这个随机数保持进用户信息表里面。
登录的时候,首先从用户信息表里面读出随机数,然后依据md5(md5(password).salt)生成密码与数据库中的密码进行比对。

要在.NET中实现同样的效果,首先要实现MD5函数,使其与PHP中md5()的结果一致。

public static string MD5ForPHP(string s)
{
System.Security.Cryptography.MD5CryptoServiceProvider HashMD5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
return BitConverter.ToString(HashMD5.ComputeHash(Encoding.UTF8.GetBytes(s))).Replace("-", "").ToLower();
}


然后获取密码的方法就比较简单了。(Password是用户输入的密码,Salt是保存进用户表的随机数)

public static string GetUCenterPassword(string Password, string Salt)
{
return MD5ForPHP(MD5ForPHP(Password) + Salt);
}


下次再贴上与MYSQL的操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: