UCenter密码算法规则和生成方法

康盛的系列产品,包括Discuz、UCHome、Supesite都集成了同一个用户系统UCenter,用户登录的密码也保存在 UCenter中,对于其他系统集成或导出数据到UCenter系统,通常会遇到密码生成的问题,这里就讨论一下UCenter的用户密码算法规则和生成 方法。 密码通常使
康盛的系列产品,包括Discuz、UCHome、Supesite都集成了同一个用户系统——UCenter,用户登录的密码也保存在 UCenter中,对于其他系统集成或导出数据到UCenter系统,通常会遇到密码生成的问题,这里就讨论一下UCenter的用户密码算法规则和生成 方法。
 
  密码通常使用MD5对用户密码HASH 后保存在数据库中的方法,如果黑客拿到了这个HASH数值,那么可以采用字典的方式暴力破解,如果这个字典数据库足够大,并且字典比较符合人们的设置习惯 的话,那很容易就能破解常见的密码,因此UCenter采用了salt来防止这种暴力破解,salt是一随机字符串,它与口令连接在一起,再用单向函数对 其运算,然后将salt值各单向函数运算的结果存入数据库中。如果可能的salt值的数目足够大的话,它实际上就消除了对常用口令采用的字典式攻击,因为 黑客不可能在数据库中存储那么多salt和用户密码组合后的HASH值。
 
  UCenter的创始人密码是保存在文件中的,打开uc下面 /data/config.inc.php文件,里面的UC_FOUNDERPW保存的就是密码,而UC_FOUNDERSALT保存的是SALT数值, 创始人密码的创建规则是:UC_FOUNDERPW=md5(md5(PASSWORD).UC_FOUNDERSALT),就是先将密码MD5,然后添 加salt,然后再次MD5,产生的HASH数值保存在config.inc.php文件中,因此修改UC_FOUNDERPW里面的数值就可以修改 UCenter的创始人密码。
 
  UCenter的用户信息是保存在uc_members表中,在这个表中,每个用户都有一个不同的随机 salt字段,表中的password字段为计算后的密码,密码计算规则是$password=md5(md5($password).$salt),也 就是将用户的密码MD5后,添加salt,然后再MD5,保存在password字段中。
  因此,如果进行不同系统的数据转换,可以根据 这个原理,将其他系统的用户名和密码计算后,导入UCenter的uc_members表中,实现用户的迁移。例如,如果原有系统使用的是 md5(password)这样的算法保存密码,那就通过程序随机生成salt,然后计算两者累加后的md5,这样就很容易计算出这个用户在 UCenter中的用户密码HASH值,从而实现用户的无缝迁移。
 
  不过,如果原有系统使用的是md5(password+salt)的 方式保存的密码,那就无法实现密码的平滑迁移UCenter了,即使迁移,也只能人为将其UCenter的password增加一个salt才能使用,因 此,我们在平时设计系统用户密码的时候,应该尽量采用md5(md5(password)+salt)的方式保存密码,这样才能方便的实现和 UCenter的接口,并且保证了安全性,通常对于英文用户名来说,自建系统使用username来做salt是个简便的方法。
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

使用ecshop最新版会员 找回密码并重置新密码后无法使用新密码登陆。 分析结果: ecshop密码原则上使用一次性md5加密,当注册新用户成功后观察数据库密码字段,确实为md5值 而当用户第一次登陆,ecshop做了一次非常牛逼的动作,判断用户数据行是否存在ec_salt
DZ论坛,UC密码正确却无法登录后台的解决方法。或者登录ucenter后,无法进行操作,点击选项后又跳出登录的问题。 具体解决方案如下: 登录远程主机或者打开FTP连接工具 打开网站所在目录,找到以下文件 /uc_server/model 中找到admin.php 打开 /uc_server/mo
小编通过分析了下会员获取密码的文件可能存在问题,小编又查阅了些资料找到了解决问题的方法。 下面我们提供下邮箱重置密码参数失败的解决方法,如果有最新版本没有发现这个问题的,就可以不做处理。 1、修改member_getpasswd.php和member_getpasswd.php添加
有些站点使用的是 Discuz! 7.2 或是还未升级的 Discuz! X1.5,却将 UCenter 升级到了 1.6.0 版本,那么必须使用的对应版本的 uc_client 才可以继续正常使用,即 uc_client 也必须为 1.6.0 版本。 升级方法,直接下载附件中提供的 1.6.0 版本的 uc_client 目
目录:/source/function/ 文件:function_member.php 修改:搜索第一个900( $return = (!$login || (TIMESTAMP - $login[lastupdate] 900)) ? 5 : max(0, 5 - $login[count]);),然后修改为你想要的秒数即可。 提示文字修改: 目录:source\language 文件
遇到一些站长出现ucenter通信成功,更改用户名的时候,出现ucenter用户名更改,但是论坛下的未更改,解决办法: 找到/source/class/discuz/discuz_application.php的文件 删除删除369-371这三行代码 if(strpos($temp, $str) !== false) { system_error(requ