Mot de passe hash MD5

Fermé
markaz Messages postés 330 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 16 septembre 2015 - 7 mai 2013 à 12:20
markaz Messages postés 330 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 16 septembre 2015 - 7 mai 2013 à 18:04
Bonjour, je voudrais savoir s'il est possible de se connecter (login, mot de passe) si le mot de passe dans la BDD est "hashé" MD5?
Si oui comment procéder?

Merci



3 réponses

Utilisateur anonyme
7 mai 2013 à 12:24
Salut salut,

Oui oui tu peux, normaement tes mot de passe sont cryptés en bdd, lors de l'authentification ce que tu fais c'est que tu récupères le mot de passe crypté , tu crypte en md5 le mot de passe que l'utilisateur t'envoie et tu compares les cryptages, s'ils sont égaux => c'est bon !
0
markaz Messages postés 330 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 16 septembre 2015 5
7 mai 2013 à 14:06
J'ai du mal à me connecter, mon code:


<?php 
   // On démarre la session
	session_start();
	
	$login = mysql_real_escape_string($_POST['login']);
	$pass =  mysql_real_escape_string(md5($_POST['pass']));
	
	$loginOK = false;  // cf Astuce
	
	// On n'effectue les traitements qu'à la condition que les informations aient été effectivement postées
	if ( isset($_POST) && (!empty($login)) && (!empty($pass)) ) {
	
		extract($_POST);  
		
		if ((isset($_SESSION['pseudo'])) && (($_SESSION['pseudo'])== $login)){?>
			<script language = "JavaScript">; 
                       alert('Vous etes deja connecte, redirection vers la page...'); 
                       document.location.href="index.php";
            </script>
		<?php }
		else{
			
			// On va chercher le mot de passe afférent à ce login
			$sql = ('SELECT * FROM membre WHERE pseudo="'.$login.'"AND password="'.$pass.'" AND activer=1'); 
			$req = mysql_query($sql) or die('Erreur parametres de connexion : <br /><h1>'.mysql_error().'</h1>');
			$dataNum = mysql_num_rows($req);
				
			// On vérifie que l'utilisateur existe bien
			if ($dataNum > 0) {
				$data = mysql_fetch_assoc($req);

				// On vérifie que son mot de passe est correct
			   if ($pass == $data['password']) {
					 $loginOK = true;
 					
					  if(!isset($erreur)){
						  // Si le login, toutes les autres donnees sont ont été validé on met les données en sessions
							$_SESSION['nom'] = $data['nom'];
							$_SESSION['prenom'] = $data['prenom'];
							$_SESSION['pseudo'] = $data['pseudo'];
						 }
						?>
						<script language = "JavaScript">; 
							alert('Vous etes maintenant connectes'); 
							document.location.href = 'index.php';
						 </script> 
					   <?php  
				 }
			}
		 
		       else{?>
				 <script language = "JavaScript">;alert('Vos parametres de connexion sont incorrects ou le pseudo est en cours d\'utilisation'); 
                  document.location.href = 'connexion-membre.php';
                </script>
                <?php }
		}    
	}
?>
0
Utilisateur anonyme
7 mai 2013 à 14:17
Dans ta requête en base :
'SELECT * FROM membre WHERE pseudo="'.$login.'"AND password="'.$pass.'" AND activer=1'

Si tes mots de passe en base sont en md5 il faut comparer le ctyptage :
'SELECT * FROM membre WHERE pseudo="'.$login.'"AND password="'.md5($pass).'" AND activer=1'

0
Angelneonizz Messages postés 784 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 19 février 2018 137
7 mai 2013 à 14:24
bonjour,
$pass est déja crypté en md5 à la ligne 5
0
Ah c'est vrai javais pas vu...
Je comprends pas tout au fonctionnement du script, parce que son extract($_POST) va écraser la variable $pass déclarer ligne 5
0
Angelneonizz Messages postés 784 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 19 février 2018 137
7 mai 2013 à 14:32
effectivement, je ne connaissais pas cette fonction qui est très pratique.

Du coup il suffit de virer cette ligne et ça devrait marcher !
0
Utilisateur anonyme
7 mai 2013 à 14:34
Y a des chances, il reste plus que la personne concernée nous dise ce qu'il en est ;)
0
markaz Messages postés 330 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 16 septembre 2015 5
7 mai 2013 à 16:06
kyser soze tu as raison, effectivement le risque de collision avec des variables existantes , modification ou non et de ne pas maîtriser les variables est grande.
Son utilisation n'est pas très efficace ici.

Mais même supprimer ne règle pas mon problème.
J'ai testé pour un mot de passe non crypté, il n'y a pas de souci avec code.
0
Tatanos Messages postés 966 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 26 mai 2016 156
7 mai 2013 à 16:17
Bonjour,

Tu peux enlever ta ligne 33 je pense

if ($pass == $data['password']) {

La valeur sera forcément égale puisque tu as une clause AND password="'.$pass.'" dans ta requête.
0
markaz Messages postés 330 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 16 septembre 2015 5
7 mai 2013 à 17:12
C'était juste par précaution. Mais ça ne résout pas le problème
0
Tatanos Messages postés 966 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 26 mai 2016 156
7 mai 2013 à 17:18
Tu tombes sur quelle erreur ? Ca te dis que "Vos parametres de connexion sont incorrects ou le pseudo est en cours d\'utilisation" ? (t'es dans le ELSE ?)
0
markaz Messages postés 330 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 16 septembre 2015 5
7 mai 2013 à 18:04
Oui : "Vos parametres de connexion sont incorrects ou le pseudo est en cours d\'utilisation"
0