我正在从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。
任何人都可以想到我应该寻找替代加密可能性的地方吗?
我不知道在哪里查看或为什么此特定用户帐户似乎加密不同。
答案 0 :(得分:1)
在Joomla标准中加密处理如下。
jimport('joomla.user.helper');
$salt = JUserHelper::genRandomPassword(32);
$crypt = JUserHelper::getCryptedPassword($password_choose, $salt);
$password = $crypt.':'.$salt;
您可以通过将整个joomla框架加载到root中的单个文件来在单独的文件中运行比较。
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );//this is when we are in the root
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
此外,您无法解密Joomla密码。如果您知道密码(原始文本)然后尝试使用wordpress密码fromat。
希望这可能会有所帮助..