杰奇2.4登录注册密码加密规则,详细研究

最近在修一个程序,对接的是杰奇的数据库,它有个明显的问题就是登录注册是失效的,这个问题在1.X的版本并不会出现,我折腾了一下发现是杰奇2.4的密码字段加密规则有了变化,导致了自然而然出现的问题。所以,研究一下新的密码加密的机制,也就有了一些必要的感觉。毕竟最近还在学习mui开发,感觉不搞个app出来对不起自己唉,但是app的话又要拜托朋友写接口,登录注册本就是个大问题啊。

呼~
依旧是老规矩,如果感觉不太对,这篇文章就会删除。
我只是基于网上流传的版本进行兴趣爱好的研究,如果大家要正规做站请尽量支持官方正版,那个最安全,也最靠谱。

折腾开始

首先我找了一下杰奇2.4的密码是怎么加密的。

比如class/user.php文件,存在如下代码:

public function encryptPass($pass)
{
    $salt = $this->getVar('salt', 'n');
    if (!empty($salt)) {
        return md5(md5($pass) . $salt);
    } else {
        return md5($pass);
    }
}

可以很明显的看到,密码字段的加密叠了两层,在第一次加密的基础上,接合一个$salt字段,再进行一次md5。

但是我们打开杰奇2.3和以下的版本看,代码简单的吓人,是这样的:

public function encryptPass($pass)
{
    return md5($pass);
}

感觉确实是一次更加安全的,用来防止撞库的升级啊,那么我就更加好奇了,我想看看3.0的,所以在兴趣使然的前提下,我拜托哥们给了我一个单独解密的user.php文件,对于杰奇3.0,它所在的位置是/cms/modules/system/class,再次找到同样的代码区域。

public function encryptPass($pass)
{
    $salt = $this->getVar("salt", "n");
    if (!empty($salt)) {
        return md5(md5($pass) . $salt);
    } else {
        return md5($pass);
    }
}

emmmm,好吧,是一模一样的,说明至少3.0版本这里的加密方式仍然相同。
好了,然后回到一个实际的问题$salt字段是什么,从哪里获取到的,怎么来的。

其实user.php这个文件已经给了答案,可以看如下的代码:

$salt = substr(md5(uniqid(rand(), true)), -16);
$newUser->setVar("salt", $salt);
if (!isset($params["password"]) || strlen($params["password"]) == 0) {
    $newUser->setVar("pass", "");
} else {
    $newUser->setVar("pass", $this->encryptPass($params["password"], $salt));
}

在这个代码里,告诉了$salt是通过加密一个随机数,然后取指定的位数得到的,这个安全做得真心到位,关键的这一句一定要注意。

$salt = substr(md5(uniqid(rand(), true)), -16);

$salt是凭空生成的,然后扔进了数据库,数据里也摆在面前了。
杰奇2.4登录注册密码加密规则,详细研究

所以一切豁然开朗,那就是注册的时候,生成$salt字段,先加密pass,然后和pass一起存入数据库。而登录的时候,就是直接先从数据库里取出$salt字段,加密传递的pass,和数据里的已经加密pass进行比对,就完成了登录注册验证的整个流程。

登录加密的简单范例:

$saltsql =  $db->get_row("select * from jieqi_system_users where uname = '".$chname."'");
$salt = $saltsql['salt'];
$pass = md5(md5($chpass).$salt);

注册加密的简单范例

$salt = substr(md5(uniqid(rand(), true)), -16);
$regpass = md5(md5($regpass).$salt);

OK,思路解析完成,继续我的app开发大业。

本文由网友投稿或「聚码源码网」整理自网络,如转载请注明出处:https://www.jumaniu.com/14109/

本站发布的内容若侵犯到您的权益,请邮件联系 zhangqy2022#yeah.net 删除,我们将及时处理!

从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!

本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。

本站资源仅供学习和交流使用,版权归原作者所有,请在下载后24小时之内自觉删除。

若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。

常见问题
  • 本站所有资源解压密码为:www.jumaniu.com 或 www.tdji.cn
查看详情

相关文章

评论
暂无评论