2013-03-11 69 views
0

我從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($密碼$鹽):$鹽=數據庫密碼值

在數據庫中,因爲它是不使用的帳戶密碼值似乎已經使用了相同的密碼,並在相同的格式([md5hash]:salt)。我知道密碼是正確的,因爲我可以用它登錄客戶端的網站。

另外,我在整個Joomla代碼庫上搜索getCryptedPassword函數。在所有情況下,都不會發送明確的加密方法 - 代碼和文檔均指示默認使用md5。

任何人都可以想到任何地方我應該尋找替代加密可能性?

我不知道還有什麼地方看,或爲什麼這個特定的用戶帳戶似乎是加密不同。

回答

1

在Joomla標準加密處理如下。

 jimport('joomla.user.helper'); 
    $salt = JUserHelper::genRandomPassword(32); 
    $crypt = JUserHelper::getCryptedPassword($password_choose, $salt); 
    $password = $crypt.':'.$salt; 

您可以通過將單個文件加載到一個單獨的文件中來在單獨的文件中運行compare事件。

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嘗試。

希望這可以幫助..