MyBB.support, le portail francophone de MyBB
Cryptage des password ? - Version imprimable

+- MyBB.support, le portail francophone de MyBB (http://mybb.fr)
+-- Forum : Archives (http://mybb.fr/forum-25.html)
+--- Forum : Archives techniques (http://mybb.fr/forum-27.html)
+--- Sujet : Cryptage des password ? (/thread-176.html)



Cryptage des password ? - Duddy - 14-01-2007

Salut tous le monde Smile
Voila, j'ai besoin d'aide pour integrer mybb à mon site.
Je voudrais en faites, installer un cookie et une session sur mon site en fonction des inscrits sur le forum, mais voila, je n'arrives pas à comprendre comment les mots de pass on été crypté, car j'ai essayé avec le module md5, mais les mots de passes généré après le cryptage sont encore différent, alors que c'est les mêmes :s
Donc si quelqu'un pouvais me dire comment les password était cryptée, car là je commence à péter un cable :s

Merci d'avance


RE: Cryptage des password ? - CrazyCat - 14-01-2007

Il y a dans la base un "salt" (qui ajoute du poivre).
La formule est:
Code :
md5(md5($salt).$password);



RE: Cryptage des password ? - Duddy - 14-01-2007

Ok, merci je vais tester ça Smile

EDIT : Voila, je vient de voire ton code, et j'avais pas remarquer au début, mais qu'est-ce que la variable salt ?
Comment je fait pour la définir ?

Car voiçi mon code qui serait utiliser pour crypter le password avant de lancer ma fonction, mais je sais pas du tous comment faire pour le $salt :s
Code :
$password = md5(md5($salt).$pass);
$cookie = login($pseudo,$password);
echo $cookie;

Voila, et je récupères la variale $pass graçe à un $_POST['']


RE: Cryptage des password ? - CrazyCat - 14-01-2007

$salt est pris dans la base.
Et sans vouloir te vexer, conserver le pass en cookie n'est pas une bonne idée. Le cookie devrait conserver le login, l'userid et son status (loggué ou pas).


RE: Cryptage des password ? - Duddy - 14-01-2007

Ne t'inquiète pas, j'ai mis des noms de variables au hasard, içi le cookie ne prendra en compte que l'id de l'utilisateur, et rien d'autre Smile
Car en faites là, ma fonction returne vrai ou faux, et ensuite je lui assigne un cookie en fonction de ce que me rend la fonction login, et dans le cookie seul l'uid sera sauvegarder, après pour avoir son status, je pense utiliser les sessions Smile

Voila, j'ai essayé le code que tu as passé, mais le password crypté n'est pas du tous le même que celui qui est inscrit dans ma base de donnée :s
Il ne me génère jamais le bon password en crypté :s

Voiçi


RE: Cryptage des password ? - CrazyCat - 15-01-2007

bon, je viens de jeter un oeil dans le code et je pense que inc/functions_user.php peut t'intéresser, il contient tout ce qui permet de gérer le login.
Code :
/**
* Checks a password with a supplied uid.
*
* @param int The user id.
* @param string The md5()'ed password.
* @param string An optional user data array.
* @return boolean|array False when not valid, user data array when valid.
*/
function validate_password_from_uid($uid, $password, $user = array())
{
    global $db, $mybb;
    if($mybb->user['uid'] == $uid)
    {
        $user = $mybb->user;
    }
    if(!$user['password'])
    {
        $query = $db->query("SELECT uid,username,password,salt,loginkey FROM ".TABLE_PREFIX."users WHERE uid='".intval($uid)."' LIMIT 1");
        $user = $db->fetch_array($query);
    }
    if(!$user['salt'])
    {
        // Generate a salt for this user and assume the password stored in db is a plain md5 password
        $user['salt'] = generate_salt();
        $user['password'] = salt_password($user['password'], $user['salt']);
        $sql_array = array(
            "salt" => $user['salt'],
            "password" => $user['password']
        );
        $db->update_query(TABLE_PREFIX."users", $sql_array, "uid = ".$user['uid'], 1);
    }

    if(!$user['loginkey'])
    {
        $user['loginkey'] = generate_loginkey();
        $sql_array = array(
            "loginkey" => $user['loginkey']
        );
        $db->update_query(TABLE_PREFIX."users", $sql_array, "uid = ".$user['uid'], 1);
    }
    if(salt_password(md5($password), $user['salt']) == $user['password'])
    {
        return $user;
    }
    else
    {
        return false;
    }
}
et la fonction salt_password est:
Code :
function salt_password($password, $salt)
{
    return md5(md5($salt).$password);
}
Ca nous donne donc md5(md5($salt).md5($pass))


RE: Cryptage des password ? - Duddy - 15-01-2007

Ok, merci je teste ça dans la soirée Smile


RE: Cryptage des password ? - Duddy - 16-01-2007

Là jje comprend vraiment rien à rien :s
J'ai repris le bout de code de Crazy Cat, et j'ai toujours pas le même password dans ma base de donnée, et le résultat de la fonction :s

Voici mon code :
Code :
$sql = mysql_query("SELECT password, salt FROM mybb_users WHERE username='$pseudo'") or die (mysql_error());
list($too, $salt)=mysql_fetch_array($sql);
echo $salt.'<br />';
echo"Salt = CbHO12Dt<br />";
$pass = salt_password($password, $salt);
echo $pass.'<br />';
echo $too;

Le dernier echo est donc pour l'affichage du password qui est dans la base de donnée, et ce n'est pas du tous le même, celui qui est générer par la fonction salt_password lui est :
Citation :c3367431d39bd5e82e9cf63ce8a23e5d : Celui enregistrer dans la base de donnée
02337b69b7e9e8a7577f83636c180b59 : Celui qui est généré par la fonction salt_password

Donc j'aimerai bien savoir si quelqu'un avait réussi à integer mybb à son site, car là je comprend vraiment pas comment son crypté les mots de passes, car à chaque fois il ne concorde jamais :'(


RE: Cryptage des password ? - CrazyCat - 16-01-2007

Si c'est pour intégrer mybb à un site, pourquoi n'appelles-tu pas directement les systèmes de gestion de mybb?
Dans le fichier précité, tu as toutes les fonctions utiles pour vérifier qu'un utilisateur est loggé ou pas.


RE: Cryptage des password ? - Duddy - 16-01-2007

Parce que je veux utiliser mes propres cookie, car le forum servira à la fois pour mon équipe de jeux vidéos, et je veux pas qu'il soit loggé en même temps sur les deux sites Smile
Car lors de leur première connexion sur le site, je fais une entrée dans une table pour sauvegarder certainnes informations, et donc je ne voudrais pas sauvegarder des infos d'un membre qui n'est jamais venu Smile

Et ça permet d'éviter aux membres de devoir s'inscrire deux fois, à la fois sur le site et sur le forum Smile
Mais ce que je comprend pas, c'est pourquoi il n'arrive pas à bien me crypter les mots de passes


RE: Cryptage des password ? - CrazyCat - 16-01-2007

heu, question stupide (j'ai peur de la réponse): tu envoyais $password en clair?
Si oui, c'est logique, je pensais que tu partais de ce qui est dans la base, donc le pass déjà en md5.

En fait, je n'avais pas compris ce que tu voulais faire, c'est avec ton avant-dernier message que j'ai compris: un secon système de login basé sur les données de mybb.


RE: Cryptage des password ? - Duddy - 17-01-2007

Oui, au début password n'est pas crypté Rolleyes, il provient d'un formulaire, et se faisait crypté que par la fonction salt_password Smile


 Utilitaire de traduction fourni par Regentronique