Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/09/2011, 19h02   #1
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
Par défaut Comparaison de mots de passe( en base et celui saisi)

Bonjour,

Pour gérer la sécurité de mon application, j'ai deux formulaires , l'un pour la "création de comptes", l'autre pour la "connexion".

Quand j'enregistre un compte, j'utilise md5 pour sauvegarder le mot de pasee en base. dans le formulaire(
Code :
<input type="text" name="pwd" />
).

Code :
$pwdbase=md5($_POST['pwd']);
Au moment de vérifier si la connexion a réussi(
Code :
<input type="password" name="pwdsasi" />
), je refais

Code :
$pwdsaisi=md5($_POST['pwdsasi']);
et quand je compare les deux( $pwdbase=$pwdsaisi), c'est jamais égal.
et aussi quand j’affiche le $pwdsaisi , j'ai jamais le même code présent en base.

Comment faire pour retrouver le même code crypté ?

md5 n'est-il pas irréversible ?

Merci de vos solutions.

Cordialement
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 19h05   #2
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
salut,

la comparaison c'est "==" et non "="

Donc :

Code :
1
2
3
4
5
 
if( $pwdbase == $pwdsaisi )
{
  //actions
}
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 12h31   #3
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
Bonjour,

Ok c'est une faute de frappe mais le problème ne se situait pas là-bas.

En fait, le problème vient du fait qu' au moment de vérifier si la connexion a réussi, je dois faire à nouveau le hash du mot de passe saisi pour le comparer à la valeur du mot de passe présent en base.

Et le résultat du hash du mot de passe saisi n'est pas le même que celui présent en base alors c'est le même texte de mot de passe saisi.

Exemple : à la vérification avec type="password",
je saisi css -> j'ai sha1("css")=2f84417a9e73cead4d5c99e05daff2a534b30132".

NB : j'envoie les données par ajax.

alors qu'à la la saisie :, j'ai en enregistré à la base : 2f84417a
avec :
Code :
1
2
INSERT INTO budget_admin (bogin , bpwd , bniveau )
VALUES ("'.$dlogin.'", "'.sha1($dmp).'" , "'.$dniveau.'")
$dmp est le mot de passe attribué.

Où se situe le problème selon vous ? les deux codes hashés sont pas les mêmes du tout

Merci de vos solutions


Cordialement.
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 12h51   #4
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Salut,

tu dois utiliser une méthode de chiffrement pour l"insertion à la base et durant la comparaison.
A priori tu utilises sha1 pour insérer et md5 pour la comparaison ce qui n'est pas très logique.
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 13h24   #5
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
Bonjour,

là actuellement j'utilise sha1 pour l'insertion et pour la comparaison.

ça devrait marcher car j'utilise la même fonction de cryptage mais c'est pas le cas ????

Merci des solutions.
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 09h14   #6
Membre éclairé
 
Inscription : juillet 2003
Messages : 338
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 338
Points : 339
Points : 339
Quel est exactement ton code?
Attention sha1 a pour second paramètre raw_output qui est par défaut à false et sha1 donne 40 caractères, sinon 20.
tatareau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 10h48   #7
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Ton problème vient peut-être de la longueur du champ "bpwd" dans ta bdd ; si tu fais un echo de sha1($dmp), c'est déjà tronqué ?
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 12h23   #8
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
Bonjour,

Tout à fait c’était ma déclaration du champ mot de passe en base de données.
Je l'avais mis varchar(10) et c'etait tronqué lors de l'insertion , du coup la comparaison était toujours fausse.

maintenant que je l'ai mis mis varchar(50) ça trouve le bon mot de passe.

Voila le code :

Code :
1
2
3
4
5
6
<?php
$requete = mysql_query('SELECT mpwd FROM budget_admin WHERE login = "'.$_POST['login']);
$data = mysql_fetch_assoc($requete);
 
if($data['mpwd'] == sha1($_POST['password']) //membre connecté
else //mot de passe incorrect
J’espère que c'est fiable ?
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 12h47   #9
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Citation:
J’espère que c'est fiable ?
Moi, je fais pareil pour les mdp sauf que j'utilise md5 au lieu de sha1...
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 14h56   #10
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
Bonjour,

OK d'accord.

Donc je peux m'en servir.

merci pour les réponses.


Cordialement.
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h02.


 
 
 
 
Partenaires

Hébergement Web