Fonction crypt() pour htpasswd

cs_Houzefa Messages postés 453 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 9 juillet 2004 - 27 juil. 2003 à 18:24
gopoi Messages postés 2 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 1 septembre 2009 - 15 avril 2009 à 15:37
salut,

voilà ya quelques temps j'avais fait un fichier .htpasswd pour mettre un répertoire protégé sur mon site (serveur Apache normal). le mot de passe est crypté avec la fonction crypt(), ce qui donne dans le fichier :
houzefa:$1$5GWefcRu$Osr0B37KQshz9BaXKynl0/

(j'ai changé un caractère au cas ou yen a ki sauraient le décrypter !)

maintenant dans un fichier php je voudrais vérifier que le mot de passe est bien celui que j'ai utilisé dans ce fichier, par :
if (crypt($pass_a_verifier)==$lecture_bon_pass)

donc je lis le fichier .htpasswd et j'en extrais le mot de passe crypté que je mets dans $lecture_bon_pass.

Le problème c'est que la fonction crypt(), contrairement à md5(), ne renvoie jamais la meme valeur pour un meme paramètre !
Ex :
<?
echo crypt("123toto");
echo crypt("123toto");
?>

renverra 2 mots de passes cryptés différents.

Ce qui fait que je ne peux pas vérifier si crypt($pass_a_verifier) est égal au mot de passe crypté du fichier .htpasswd.

Donc si vous avec une méthode pour faire ça, ou si vous avez juste des infos sur le cryptage par la fonction crypt(), je compte sur vous.
Pke le serveur Apache lui-meme arrive bien à faire cette vérification, vu que lorsqu'on accède à la partie cachée du site le serveur compare le passe qu'on lui donne au contenu du fichier .htpasswd.

@ + !
Houzéf@

5 réponses

defkrie Messages postés 435 Date d'inscription vendredi 20 septembre 2002 Statut Membre Dernière intervention 20 novembre 2004
28 juil. 2003 à 10:39
http://dev.nexen.net/docs/php/annotee/function.crypt.php
sinon la prochaine fois utlise md5()
\->Bye Defkrie !?!
0
cs_Houzefa Messages postés 453 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 9 juillet 2004 2
28 juil. 2003 à 18:25
ben jvoudrais bien utiliser md5() mais le pb c'est que le mot de passe du fichier .htpasswd est généré à partir de la fonction crypt(), dont le résultat est différent de celui de crypt() dans sa version par défaut.

Houzéf@
0
cs_Houzefa Messages postés 453 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 9 juillet 2004 2
28 juil. 2003 à 18:29
euh jme suis gouré dans le message jle ré-écris :

ben jvoudrais bien utiliser md5() mais le pb c'est que le mot de passe du fichier .htpasswd est généré à partir de la fonction crypt(), dont le résultat dans sa version par défaut est différent de celui de md5().

Houzéf@
0
cs_Dino Messages postés 87 Date d'inscription dimanche 16 décembre 2001 Statut Membre Dernière intervention 4 septembre 2004
17 févr. 2004 à 10:27
Si ça interesse toujours quelqu'un, le cryptage utilisé pour le ficher htpasswd est :

<? $pass = crypt('test',CRYPT_MD5); ?>

@++

ElDino
http://www.lmt64.com
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gopoi Messages postés 2 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 1 septembre 2009
15 avril 2009 à 15:37
Bonjour à tous,

je cherchai aussi un moyen de "décrypter" les mot de passes crypté par crypt()

En terme clair il est impossible de le décrypter, car crypt() est unidirectionnelle
Donc, nous ne pouvons que le comparern'est ce pas. Voici comment faire vu que crypt() donne une réponse différente à chaque fois.

<?php
$motdepassecrypt = crypt("allo"); // on crypte le mot de passe comme d'habitude

/* pour le comparer on utilise le paramètre $salt de la fonction qui sera simplement le mot de passe crypté il nous faut aussi le mot de passe essayer de notre utilisateur*/
$essai = 'allo' //si l'utilisateur n'a pas fait d'erreur

if (crypt($essai, $motdepassecrypt) == $motdepassecrypt)
//alors si la condition est vrai le mot de passe essayer est le bon
0
Rejoignez-nous