PHP - besoin d'aide avec la fonction crypt

  • natas
  • PHP Ninja
  • Proficient
  • No Avatar
  • Inscription: Mar 28, 2009
  • Messages: 305
  • Loc: AFK
  • Status: Offline

Message Mars 8th, 2012, 9:07 am

Code: [ Select ]
    $password = "natas12345";
    $password = crypt($password,SALT);
    echo $password;
    $pass2 = "natas12346";
    $pass2 = crypt($pass2,SALT);
    echo $pass2;
  1.     $password = "natas12345";
  2.     $password = crypt($password,SALT);
  3.     echo $password;
  4.     $pass2 = "natas12346";
  5.     $pass2 = crypt($pass2,SALT);
  6.     echo $pass2;


Le sel est une constante définie dans un autre fichier inclus.

Mon problème est que le mot de passe $ et $pass2 sont exactement la même valeur après chiffrement. Cela ne devrait pas être. Ce que je fais mal ?
Custom Web Design
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Mars 8th, 2012, 9:07 am

  • ScottG
  • Proficient
  • Proficient
  • No Avatar
  • Inscription: Juil 06, 2010
  • Messages: 280
  • Status: Online

Message Mars 8th, 2012, 9:14 am

Mes pensées sont Pourquoi utiliser une fonction crypt de deux sens au lieu d'une manière comme un md5 ou sha1 ?
  • natas
  • PHP Ninja
  • Proficient
  • No Avatar
  • Inscription: Mar 28, 2009
  • Messages: 305
  • Loc: AFK
  • Status: Offline

Message Mars 8th, 2012, 9:19 am

ScottG a écrit:
Mes pensées sont Pourquoi utiliser une fonction crypt de deux sens au lieu d'une manière comme un md5 ou sha1 ?


Im ne pas moyen de la fonction crypt 2 moyen.
Custom Web Design
  • ScottG
  • Proficient
  • Proficient
  • No Avatar
  • Inscription: Juil 06, 2010
  • Messages: 280
  • Status: Online

Message Mars 8th, 2012, 9:20 am

Il s'agit de l'exemple de php.net

PHP Code: [ Select ]
$password = crypt('natas12345'); // let the salt be automatically generated
 
/* You should pass the entire results of crypt() as the salt for comparing a
   password, to avoid problems when different hashing algorithms are used. (As
   it says above, standard DES-based password hashing uses a 2-character salt,
   but MD5-based hashing uses 12.) */
if (crypt('natas12346', $password) == $password) {
   echo "Password verified! $password";
}
 
  1. $password = crypt('natas12345'); // let the salt be automatically generated
  2.  
  3. /* You should pass the entire results of crypt() as the salt for comparing a
  4.    password, to avoid problems when different hashing algorithms are used. (As
  5.    it says above, standard DES-based password hashing uses a 2-character salt,
  6.    but MD5-based hashing uses 12.) */
  7. if (crypt('natas12346', $password) == $password) {
  8.    echo "Password verified! $password";
  9. }
  10.  


Ce code ne déclenchera pas cependant ce sera

PHP Code: [ Select ]
$password = crypt('natas12345'); // let the salt be automatically generated
 
/* You should pass the entire results of crypt() as the salt for comparing a
   password, to avoid problems when different hashing algorithms are used. (As
   it says above, standard DES-based password hashing uses a 2-character salt,
   but MD5-based hashing uses 12.) */
if (crypt('natas12345', $password) == $password) {
   echo "Password verified! $password";
}
 
  1. $password = crypt('natas12345'); // let the salt be automatically generated
  2.  
  3. /* You should pass the entire results of crypt() as the salt for comparing a
  4.    password, to avoid problems when different hashing algorithms are used. (As
  5.    it says above, standard DES-based password hashing uses a 2-character salt,
  6.    but MD5-based hashing uses 12.) */
  7. if (crypt('natas12345', $password) == $password) {
  8.    echo "Password verified! $password";
  9. }
  10.  
  • ScottG
  • Proficient
  • Proficient
  • No Avatar
  • Inscription: Juil 06, 2010
  • Messages: 280
  • Status: Online

Message Mars 8th, 2012, 9:27 am

Il semble que plus de code que tout stocker un md5 de sha1 à comparer avec

comme par exemple

PHP Code: [ Select ]
echo md5("natas12345") . '<br>';
echo md5("natas12346") . '<br>';
 
echo sha1("natas12345") . '<br>';
echo sha1("natas12346");
 
  1. echo md5("natas12345") . '<br>';
  2. echo md5("natas12346") . '<br>';
  3.  
  4. echo sha1("natas12345") . '<br>';
  5. echo sha1("natas12346");
  6.  
  • ScottG
  • Proficient
  • Proficient
  • No Avatar
  • Inscription: Juil 06, 2010
  • Messages: 280
  • Status: Online

Message Mars 8th, 2012, 9:39 am

Cependant si vous souhaitez toujours utiliser la fonction crypt vous pourriez essayer le sel comme dans l'exemple montré au-dessus et en dessous de cryptage

PHP Code: [ Select ]
$salt = crypt('123456');
 
$password = "natas12345";
$password = crypt($password, $salt);
echo $password . '<br>';
$pass2 = "natas12346";
$pass2 = crypt($pass2, $salt);
echo $pass2;
 
  1. $salt = crypt('123456');
  2.  
  3. $password = "natas12345";
  4. $password = crypt($password, $salt);
  5. echo $password . '<br>';
  6. $pass2 = "natas12346";
  7. $pass2 = crypt($pass2, $salt);
  8. echo $pass2;
  9.  



Cela vous donnera des résultats différents
  • WritingBadCode
  • Graduate
  • Graduate
  • Avatar de l’utilisateur
  • Inscription: Avr 28, 2011
  • Messages: 214
  • Loc: Sweden
  • Status: Offline

Message Mars 8th, 2012, 10:22 am

Cela peut être lu at php dot net :

Quote:
La norme crypt() axée sur DES renvoie le sel comme les deux premiers caractères de la sortie. Il utilise aussi seuls les huit premiers caractères de str, donc plus longues chaînes qui commencent par les mêmes huit caractères génère le même résultat (quand le sel même est utilisé).


Fondamentalement, vous devrez changer le premier 8 char pour le hachage d'être différente (si en utilisant le même hash, je suppose que vous faites depuis sa une constante définie). natas123 &lt;--l'un de ceux qui doivent reculer ou être « remplacé ».

Essayez d'utiliser votre batas123 exemple de code et de hachage, le résultat sera pas la même que vous avez obtenu lors de la natas12345 et natas12346 de hachage ? Et vous pouvez aussi essayer avec : natas12346avjkaefaenkfaenca, résultat devraient rester les mêmes que l'original.

La meilleure idée est ofc à utiliser quelque chose qui génère plus d'uniquness, vous ne voulez pas password1234 pour être abrégeable par une supposition comme : mot de passe.
  • natas
  • PHP Ninja
  • Proficient
  • No Avatar
  • Inscription: Mar 28, 2009
  • Messages: 305
  • Loc: AFK
  • Status: Offline

Message Mars 8th, 2012, 1:23 pm

WritingBadCode a écrit:
Quote:
Il utilise aussi seuls les huit premiers caractères de str, donc plus longues chaînes qui commencent par les mêmes huit caractères génère le même résultat (quand le sel même est utilisé).


Merci! Qui l'explique. Je ne peux croire que je n'a pas lu que.
Custom Web Design
  • WritingBadCode
  • Graduate
  • Graduate
  • Avatar de l’utilisateur
  • Inscription: Avr 28, 2011
  • Messages: 214
  • Loc: Sweden
  • Status: Offline

Message Mars 9th, 2012, 7:30 am

natas a écrit:
Merci! Qui l'explique. Je ne peux croire que je n'a pas lu que.


Il est facile de manquer dans ce mur de texte...:)

Afficher de l'information

  • Total des messages de ce sujet: 9 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 170 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC