Commenter un bout de code SVP

p3x Messages postés 214 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 9 janvier 2019 - 22 mai 2008 à 17:20
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 22 mai 2008 à 18:04
<ol>
<li class="li1">/// VOICI UN PETIT CODE DONT JE NE COMPRENDS PAS DU TOUT CA LOGIQUE, CE SONT 3 FONCTIONS QUI DEVRAIT NORMALEMENT PERMETTRE DE CRYPTER UN MOT DE PASSE EN MD5 ET QUI DEVRAIT ENSUITE POUVOIR COMPARER DEUX MOTS DE PASSE CRYPTES. MERCI D'AVANCE... ///
</li>
<li class="li1">


</li>
<li class="li1">
<?php




</li>
<li class="li1">


</li>
<li class="li2">

        // Return a random value

</li>
<li class="li1">
        function tep_rand($min null, $max null)

</li>
<li class="li2">

        {

</li>
<li class="li1">

            static$seeded;

</li>
<li class="li2">

 

</li>
<li class="li1">

            if(!isset($seeded))

</li>
<li class="li2">

                {

</li>
<li class="li1">

              mt_srand((double)microtime()*1000000);

</li>
<li class="li2">

              $seeded = true;

</li>
<li class="li1">

            }

</li>
<li class="li2">

 

</li>
<li class="li1">

            if(isset($min) && isset($max))

</li>
<li class="li2">

                {

</li>
<li class="li1">

                        if($min >= $max)

</li>
<li class="li2">

                        {

</li>
<li class="li1">

                                return$min;

</li>
<li class="li2">

                        }

</li>
<li class="li1">

                        else

</li>
<li class="li2">

                        {

</li>
<li class="li1">

                                returnmt_rand($min, $max);

</li>
<li class="li2">

                        }

</li>
<li class="li1">

            }

</li>
<li class="li2">

                else

</li>
<li class="li1">

                {

</li>
<li class="li2">

              returnmt_rand();

</li>
<li class="li1">

                }

</li>
<li class="li2">

        }

</li>
<li class="li1">

 

</li>
<li class="li2">

        // encrpyted password

</li>
<li class="li1">

        function tep_validate_password($plain, $encrypted)

</li>
<li class="li2">

        {

</li>
<li class="li1">

                if(tep_not_null($plain) && tep_not_null($encrypted))

</li>
<li class="li2">

                {

</li>
<li class="li1">

                        // split apart the hash / salt

</li>
<li class="li2">

                        $stack = explode(':', $encrypted);

</li>
<li class="li1">

                        if(sizeof($stack) != 2)returnfalse;

</li>
<li class="li2">

                        if(md5($stack[1] . $plain) == $stack[0])

</li>
<li class="li1">

                        {

</li>
<li class="li2">

                                returntrue;

</li>
<li class="li1">

                        }

</li>
<li class="li2">

            }

</li>
<li class="li1">

                returnfalse;

</li>
<li class="li2">

        }

</li>
<li class="li1">

 

</li>
<li class="li2">

        // This function makes a new password from a plaintext password.

</li>
<li class="li1">

        function tep_encrypt_password($plain)

</li>
<li class="li2">

        {

</li>
<li class="li1">

            $password = '';

</li>
<li class="li2">

            for($i=0; $i<10; $i++)

</li>
<li class="li1">

                {

</li>
<li class="li2">

                        $password .= tep_rand();

</li>
<li class="li1">

            }

</li>
<li class="li2">

            $salt = substr(md5($password), 0, 2);

</li>
<li class="li1">

            $password = md5($salt . $plain) . ':' . $salt;

</li>
<li class="li2">

            return$password;

</li>
<li class="li1">

        }

</li>
<li class="li2">


?>


</li>
</ol>








p3x

1 réponse

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
22 mai 2008 à 18:04
Hello,

qu'est-ce que tu ne comprends pas ? Ces fonctions sont plutôt simples. Je précise que la 2de fonction ne compare pas 2 mots de passe hashés, mais le mot de passe en clair et un mot de passe hashé supposé être le hashage du mot de passe en clair.
De plus, il manque une fonction là : tep_not_null().

Bref... la 3ème fonction créé un hash à partir d'un mot de passe en clair.
Pour ça, elle va d'abord créer un "salt" aléatoire avec tep_rand() (la 1ère fonction).
Ce "salt" est utilisé dans la composition du mot de passe.

La 2de fonction prend un mot de passe en clair et un mot de passe hashé et tente de les comparer en se servant du "salt".
0
Rejoignez-nous