2009-08-11 60 views

回答

9

Joomla爲每個密碼生成一個隨機salt。在這裏,你可以找到關於如何使用的Joomla方法的工作,以生成密碼有價值的信息:從該位

http://forum.joomla.org/viewtopic.php?f=476&t=308499

你可以看到,鹽是由一個冒號分隔符作爲密碼後保存。

$salt = JUserHelper::genRandomPassword(32); 
$crypt = JUserHelper::getCryptedPassword("blabla", $salt); 
$password = $crypt . ':' . $salt; 

[編輯] 我只需要編寫一個Authorisiation驗證與Zend_Auth的驗證對一個Joomla(1.0)安裝,我想我會在這裏更新關於它的信息。我的代碼片段。

$dbAdapter = Zend_Registry::get('jdb'); 
$this->_authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter); 
$this->_authAdapter->setTableName('jos_users') 
->setIdentityColumn('username') 
->setCredentialColumn('password'); 

//Joomla 1.0 uses hashes in the form md5(passwort + salt) + salt 
$users = new Users(); 
$hash = $users->getHash($value); 
$salt = substr($hash, strpos($hash, ':') + 1); 
$password = md5($context['password'] . $salt) . ':' . $salt; 

[/編輯]

+0

是否有任何方法來避免鹽和只使用md5的密碼???/ – Andromeda 2009-08-11 16:15:44

+0

沒有。除非你重寫軟件的所有相關部分... – markus 2009-08-11 16:18:04

+0

這是不正確的。如果省略冒號(在數據庫中的密碼中),Joomla!將假設一個MD5哈希密碼(請參閱「如何恢復我的管理員密碼?」,http://forum.joomla.org/viewtopic.php?t=10985)所以如果你(真的)想要你所有的密碼僅在md5中,您需要重寫或更改「更改密碼」過程。的Joomla!只要他只從數據庫中讀取它們,就不會使用它們。 – giraff 2009-08-14 18:41:39

0

尤其不熟悉joomla,但大多數鹽漬密碼或者包含密碼字符串中的salt,我的分隔符(通常爲$或其他非字母數字字符)。或者它可能存儲在db表中的單獨列中。

2

在用戶表中的密碼字段,它是位的後 「:」

的公式是類似

密碼DB字段= MD5 (密碼+鹽)+「:」+ salt

0

如果joomla每次都是隨機生成salt,它將如何驗證用戶對它的登錄。我通常認爲醃製密碼應該作爲常規文本存儲在某個地方,並且您會根據散列版本和散列密碼進行驗證。

+0

它從用戶數據庫中獲取散列鹽字符串,取出鹽份並再次執行md5(userinput + salt)+:+ salt。如果結果對數據庫中的字符串進行了匹配,那麼密碼是正確的。 – markus 2010-12-01 08:37:49