Fonction crypt() pour htpasswd

Signaler
Messages postés
453
Date d'inscription
dimanche 9 février 2003
Statut
Membre
Dernière intervention
9 juillet 2004
-
Messages postés
2
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
1 septembre 2009
-
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

Messages postés
435
Date d'inscription
vendredi 20 septembre 2002
Statut
Membre
Dernière intervention
20 novembre 2004

http://dev.nexen.net/docs/php/annotee/function.crypt.php
sinon la prochaine fois utlise md5()
\->Bye Defkrie !?!
Messages postés
453
Date d'inscription
dimanche 9 février 2003
Statut
Membre
Dernière intervention
9 juillet 2004
2
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@
Messages postés
453
Date d'inscription
dimanche 9 février 2003
Statut
Membre
Dernière intervention
9 juillet 2004
2
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@
Messages postés
87
Date d'inscription
dimanche 16 décembre 2001
Statut
Membre
Dernière intervention
4 septembre 2004

Si ça interesse toujours quelqu'un, le cryptage utilisé pour le ficher htpasswd est :

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

@++

ElDino
http://www.lmt64.com
Messages postés
2
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
1 septembre 2009

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