cs_Houzefa
Messages postés453Date d'inscriptiondimanche 9 février 2003StatutMembreDernière intervention 9 juillet 2004
-
27 juil. 2003 à 18:24
gopoi
Messages postés2Date d'inscriptionjeudi 16 avril 2009StatutMembreDerniè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 :
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.
cs_Houzefa
Messages postés453Date d'inscriptiondimanche 9 février 2003StatutMembreDernière intervention 9 juillet 20042 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.
cs_Houzefa
Messages postés453Date d'inscriptiondimanche 9 février 2003StatutMembreDernière intervention 9 juillet 20042 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().
gopoi
Messages postés2Date d'inscriptionjeudi 16 avril 2009StatutMembreDerniè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