2009-08-11 5 views

Répondre

9

Joomla génère un sel aléatoire pour chaque mot de passe. Ici vous pouvez trouver des informations précieuses sur la façon de travailler avec les méthodes de joomla pour générer des mots de passe:

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

A partir de ce bit, vous pouvez voir que le sel est stocké après le mot de passe par deux points comme séparateur.

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

[EDIT] Je avais juste besoin d'écrire un Authorisiation Validator avec Zend_Auth pour valider contre un Joomla (1.0) installer et je pensais que je mettre à jour les informations à ce sujet ici. Un petit bout de mon code.

$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; 

[/ EDIT]

+0

est-il un moyen d'éviter ce sel et d'utiliser seulement md5 pour le mot de passe ???/ – Andromeda

+0

pas. sauf si vous réécrivez toutes les parties concernées du logiciel ... – markus

+0

Ceci est incorrect. Si le deux-points (dans les mots de passe dans la base de données) est omis, Joomla! supposera un mot de passe has-md5 (voir "Comment puis-je récupérer mon mot de passe d'administrateur?", http://forum.joomla.org/viewtopic.php?t=10985) Donc, si vous voulez (vraiment) avoir tous vos mots de passe en md5 seulement, vous devez réécrire ou modifier les procédures "Change-Password". Joomla! ne les salera pas tant qu'il ne les lit que dans la base de données. – giraff

0

Je ne connais pas joomla en particulier, mais la plupart des mots de passe salés contiennent le sel dans la chaîne de mot de passe, séparés par un délimiteur (typiquement $ ou un autre caractère non alphanumérique). Ou il peut être stocké dans une colonne séparée dans la table db

2

Dans le champ mot de passe dans la table des utilisateurs, il est le bit après le ":"

La formule est quelque chose comme

mot de passe champ DB = md5 (mot de passe + sel) + ":" + sel

0

Si joomla génère aléatoirement le sel à chaque fois, comment valide-t-il les connexions de l'utilisateur dans le monde? Je pensais normalement que le mot de passe salé était supposé être stocké quelque part en tant que texte régulier et que vous validiez par rapport à la version hachée de ce mot de passe et hashé.

+0

il obtient la chaîne de sel de hachage de la DB pour l'utilisateur, prend la partie de sel et fait à nouveau md5 (userinput + sel) +: + sel. Si le résultat maches la chaîne dans le DB, le mot de passe était correct. – markus