在.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()的结果一致。
然后获取密码的方法就比较简单了。(Password是用户输入的密码,Salt是保存进用户表的随机数)
下次再贴上与MYSQL的操作。
在用户注册时,对用户输入的密码进行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的操作。
相关文章推荐
- 在.Net中实现Discuz论坛平台UCenter密码加密
- .NET平台下基于webservice,通过获取硬件cpu序列号和随机字符串序列号实现软件加密的一种方法。
- Discuz论坛密码与密保加密规则
- 网站与discuz的论坛进行整合,实现用户同步注册,单点登陆,同步删除用户,同步修改用户密码
- java和Discuz论坛实现单点登录,通过Ucenter(用户管理中心)
- .NET实现Salt+Hash密码加密
- Discuz论坛密码加密方式详解(转)
- 网站与discuz的论坛进行整合,实现用户同步注册,单点登陆,同步删除用户,同步修改用户密码
- .net实现discuz的双重加密
- Discuz论坛密码加密方式详解
- java和Discuz论坛实现单点登录,通过Ucenter(用户管理中心)
- Discuz论坛密码加密方式详解
- java和Discuz论坛实现单点登录,通过Ucenter(用户管理中心)
- 构建LAMP平台利用虚拟主机实现提供discuz论坛、基于SSL安装phpMyAdmin、安装wordpress
- Discuz论坛密码与密保加密规则
- Linux服务器上搭建LAMP平台,在基于平台构建Discuz论坛
- 修改Discuz论坛实现对附件下载的限速
- JavaWeb使用cookie实现记住密码,密码加密
- .net登录页面的密码加密
- Druid 数据库用户密码加密 代码实现