最新最全的移动资源,海量教程攻略!

网站首页 > 技术支持 > discuz > discuz使用教程 > discuz用户密码加密方式解析及忘记密码的解最新决办法

discuz用户密码加密方式解析及忘记密码的解最新决办法

作者: 资源猫 时间: 2020-03-03 17:47:08 人气: 6

[代码]php代码:
function add_user($username, $password, $email, $uid = 0, $questionid = '', $answer = '', $regip = '') {        $regip = empty($regip) ? $this- base- onlineip : $regip;        $salt = substr(uniqid(rand()), -6);        $password = md5(md5($password).$salt);        $sqladd = $uid ? uid=' .intval($uid). ', : '';        $sqladd .= $questionid 0 ? secques=' .$this- quescrypt($questionid, $answer). ', : secques='',         $this- db- query( INSERT INTO .UC_DBTABLEPRE. members SET $sqladd username='$username', password='$password', email='$email', regip='$regip', regdate=' .$this- base- time. ', salt='$salt'         $uid = $this- db- insert_id();        $this- db- query( INSERT INTO .UC_DBTABLEPRE. memberfields SET uid='$uid'         return $uid;   }
这个是添加用户到ucenter中的方法,注意里面这句话:
$password = md5(md5($password).$salt);
这里可以看到存储到数据库中的用户密码的加密方式:
表中的密码等于:用户输入的密码经过md5加密,后面跟上一段字符串$salt之后,再md5加密一次。
$salt这段字符串哪来的呢?
看紧挨着上面的一段代码:$salt = substr(uniqid(rand()), -6);
解开了说,rand(),是一段随机数,位数也不确定。
uniqid(),是 基于以微秒计的当前时间,生成一个唯一的 ID。
可以再php里面运行这句话:echo uniqid(rand());
能够得到一段数字与字母的组合的数字。
substr是一段php截取字符串的方法。
substr(uniqid(rand()), -6);可以分析为从后面往前截取6个字符。
那么discuz存储密码的方式就得到了:用户输入密码md5加密后,在连接上6个随机字符然后md5加密一次。

感谢访问资源猫吧,本站所有资源均来自互联网或用户分享,如您发现本站存在侵权或违规内容,请来邮件告知我们! 资源分享/侵权下架/商务合作联系邮箱:qiazou77ziyuan@126.com