一尘不染

joomla密码加密

php

我需要访问joomla用户表jos_users以从外部php脚本[codeignitor]进行登录检查。

joomla这样存储密码

4e9e4bcc5752d6f939aedb42408fd3aa:0vURRbyY8Ea0tlvnTFn7xcKpjTFyn0YT

看起来这不是正常的MD5,所以我无法使用md5(password)

创建密码的可能方式是什么?

谢谢。


阅读 967

收藏
2020-05-29

共1个答案

一尘不染

Joomla密码是经过MD5哈希处理的,但是在哈希处理之前,已对密码进行了固定处理。它们被存储在数据库中,因为{hash}:{salt}此盐是长度为32个字符的随机字符串。

因此,要创建一个新的密码哈希, md5($password.$salt)

编辑

好的,要检查密码,例如说用户myguy输入了密码mypassword,您将从具有username的数据库中检索该行myguy

在此行中,您将找到密码say
4e9e4bcc5752d6f939aedb42408fd3aa:0vURRbyY8Ea0tlvnTFn7xcKpjTFyn0YT。您将密码哈希和盐分开:

$hashparts = preg_split (':' , $dbpassword);
echo $hashparts[0]; //this is the hash  4e9e4bcc5752d6f939aedb42408fd3aa
echo $hashparts[1]; //this is the salt  0vURRbyY8Ea0tlvnTFn7xcKpjTFyn0YT

现在使用此盐和myguy输入的密码计算哈希

$userhash = md5($userpassword.$hashparts[1]); // This would be 'mypassword' and the salt used in the original hash

现在,如果这$userhash$hashparts[0]是相同的用户已经输入了正确的密码。

2020-05-29