我正在从 Joomla 1.5 迁移到 WordPress,我的客户不希望用户必须重新注册。所以我正在编写一个 WordPress 插件来匹配用户的密码和 jos_users 表中的内容,然后相应地更新他们在 WordPress 中的信息。
到目前为止,我所阅读的有关 Joomla 密码身份验证的所有内容都指向 getCryptedPassword 函数:
http://docs.joomla.org/API15:JUserHelper/getCryptedPassword
我的插件以相同的方式加密用户输入的内容:
$db_password = explode(':', $query); //what's in the password field of jos_users
$salt = $db_password[1];
$string_to_be_hashed = $user_entered_pass . $salt;
$test_pass = md5($string_to_be_hashed);
$test_pass = $test_pass . ":" . $salt;
if($test_pass = query){echo "success"}
我已经使用这个测试了 3 个帐户......但只有 2 个正在验证。
具体来说: md5($password$salt):$salt != 数据库密码值
在数据库中,它不起作用的帐户的密码值似乎使用了相同的加密和相同的格式([md5hash]:salt)。我知道密码是正确的,因为我可以用它登录到客户的网站。
此外,我在整个 Joomla 代码库中搜索了 getCryptedPassword 函数。在所有情况下,都不会发送显式加密方法 - 代码和文档都表明默认使用 md5。
谁能想到我应该寻找替代加密可能性的任何地方?
我不知道还能去哪里看,也不知道为什么这个特定的用户帐户似乎以不同的方式加密。