我需要访问joomla用户表jos_users以从外部php脚本[codeignitor]进行登录检查。
jos_users
joomla这样存储密码
4e9e4bcc5752d6f939aedb42408fd3aa:0vURRbyY8Ea0tlvnTFn7xcKpjTFyn0YT
看起来这不是正常的MD5,所以我无法使用md5(password)。
md5(password)
创建密码的可能方式是什么?
谢谢。
Joomla密码是经过MD5哈希处理的,但是在哈希处理之前,已对密码进行了固定处理。它们被存储在数据库中,因为{hash}:{salt}此盐是长度为32个字符的随机字符串。
{hash}:{salt}
因此,要创建一个新的密码哈希, md5($password.$salt)
md5($password.$salt)
编辑
好的,要检查密码,例如说用户myguy输入了密码mypassword,您将从具有username的数据库中检索该行myguy。
myguy
mypassword
在此行中,您将找到密码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]是相同的用户已经输入了正确的密码。
$userhash
$hashparts[0]