Crypter / Decrypter mon mot de passe

Fredy07
Invité n'ayant pas de compte PHPfrance

13 juil. 2009, 13:26

Et comment envoyer le mot de passe décrypté aux utilisateurs??

ViPHP
ViPHP | 2291 Messages

13 juil. 2009, 14:04

2- Si l'utilisateur a perdu son mot de passe, on peut l'envoyer par e-mail afin qu'il puisse se connecter.
Salut,

Par principe n mot de passe est connu uniquement de l'utilisateur, alors pourquoi ne pas lui envoyer un nouveau mot de passe en cas d'oublie de celui-ci :?:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

13 juil. 2009, 14:29

Merci Ryle pour la réponse, alors ce que je veux faire en claire c'est:

1- Vérifier le mot de passe crypte dans la BD est le même saisi
2- Si l'utilisateur a perdu son mot de passe, on peut l'envoyer par e-mail afin qu'il puisse se connecter.
Pour l'authentification, il te suffit de crypter le mot de passe saisi par l'utilisateur et de le comparer avec ceux que tu as déjà en base :
$sql = "SELECT * FROM membres WHERE username='$username' AND pass = AES_ENCRYPT('".$cle."','".$pass."')";
Pour l'utilisateur qui a perdu son mot de passe, il te suffit de faire un
SELECT AES_DECRIPT('".$cle."', pass) FROM ...
pour récupérer le mot de passe décrypté de l'utilisateur (reste plus ensuite qu'à lui envoyer par mail par exemple :))

Ceci étant, il est effectivement préférable pour des raisons de sécurité, de chiffrer les mots de passe, ce qui empêche tout décryptage (et évite ainsi à des personnes mal intentionnées de découvrir des mots de passe personnels). Si l'utilisateur perd son mot de passe on lui en génère alors un nouveau qu'il pourra ensuite repersonnaliser :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Fredy07
Invité n'ayant pas de compte PHPfrance

14 juil. 2009, 15:44

Merci Ryle pour la réponse, alors ce que je veux faire en claire c'est:

1- Vérifier le mot de passe crypte dans la BD est le même saisi
2- Si l'utilisateur a perdu son mot de passe, on peut l'envoyer par e-mail afin qu'il puisse se connecter.
Pour l'authentification, il te suffit de crypter le mot de passe saisi par l'utilisateur et de le comparer avec ceux que tu as déjà en base :
$sql = "SELECT * FROM membres WHERE username='$username' AND pass = AES_ENCRYPT('".$cle."','".$pass."')";
Pour l'utilisateur qui a perdu son mot de passe, il te suffit de faire un
SELECT AES_DECRIPT('".$cle."', pass) FROM ...
pour récupérer le mot de passe décrypté de l'utilisateur (reste plus ensuite qu'à lui envoyer par mail par exemple :))

Ceci étant, il est effectivement préférable pour des raisons de sécurité, de chiffrer les mots de passe, ce qui empêche tout décryptage (et évite ainsi à des personnes mal intentionnées de découvrir des mots de passe personnels). Si l'utilisateur perd son mot de passe on lui en génère alors un nouveau qu'il pourra ensuite repersonnaliser :)
Malheureusement ca ne me retourne pas le mot de passe:
$sql = "SELECT AES_DECRYPT('".$cle."', '".$pass."') FROM membres WHERE username='$username'";

$resultat = mysql_query($sql) or die ('Impossible de selectionner: ' .mysql_error());

$total = mysql_num_rows($resultat);

$rows = mysql_fetch_array($resultat);
{
	 	$username = $rows['username'];
 		$pass = $rows['pass'];
}
}

if ($total)
{
	echo 'Vous etes '.$username. ' connectes<br>';
	echo 'Le mot de passe est: '.$pass. '<br>';
	
}

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

14 juil. 2009, 15:57

Normal... le SELECT te retourne les informations que tu lui demandes et rien de plus. Si tu ne lui demandes pas de te retourner le username, tu ne l'auras pas. Si tu lui demandes de te retourner une information transformée (un mot de passe décrypté), tu ne peux pas le récupérer comme le mot de passe normal...
// Je demande à ma requête de retourner la valeur en base du username et du mot de passe décrypté, en donnant à ce dernier l'alias "pwd"
$sql = "SELECT username, AES_DECRYPT('".$cle."', '".$pass."') AS pwd
  FROM membres WHERE username='".$username."'";

...

if ($rows = mysql_fetch_array($resultat))
{ 
         $username = $rows['username']; // Je peux alors récupérer la valeur du champ "username"
         $pass = $rows['pwd']; // et la valeur du champ "pwd" qui correspond au mot de passe décrypté
} 
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Fredy07
Invité n'ayant pas de compte PHPfrance

14 juil. 2009, 16:53

Je me connecte avec n'importe quel mot de passe ainsi qu'il me retourne pas le mot de passe décrypté