Commenter un bout de code SVP

Signaler
Messages postés
214
Date d'inscription
vendredi 30 juillet 2004
Statut
Membre
Dernière intervention
9 janvier 2019
-
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
<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

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
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".