Crypter / Decrypter mon mot de passe

Fredy07
Invité n'ayant pas de compte PHPfrance

06 juil. 2009, 07:52

Bonjour,

J'utilise AES_ENCRYPT pour crypter le mot de passe, comment faire pour le décrypter et l'envoyer aux utilisateurs?

Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

06 juil. 2009, 08:56

Quand tout le reste a échoué, lisez le mode d'emploi...

Invité
Invité n'ayant pas de compte PHPfrance

07 juil. 2009, 02:05

J'ai déjà vu la documentation, mais je ne sais pas comment utiliser la requête pour la décrypter.

ViPHP
ViPHP | 1136 Messages

07 juil. 2009, 07:57

Slt ,

juste pour donner mon avis concernant les mots de passe . :)

A mon sens , ils ne doivent pas être décryptable , afin de garantir que seul l'utilisateur le connaisse.

A cas ou il le perd , il faut simplement en créer un nouveau .

Les sites qui me renvoient mon mot de passe en clair par mail aprés l'avoir demandé , et bien ca me fou les boules . :?

Invité
Invité n'ayant pas de compte PHPfrance

08 juil. 2009, 16:36

Slt ,

juste pour donner mon avis concernant les mots de passe . :)

A mon sens , ils ne doivent pas être décryptable , afin de garantir que seul l'utilisateur le connaisse.

A cas ou il le perd , il faut simplement en créer un nouveau .

Les sites qui me renvoient mon mot de passe en clair par mail aprés l'avoir demandé , et bien ca me fou les boules . :?
Merci stopher, mais je voudrais juste savoir comment en faire pour l'integrer dans mon script

ViPHP
ViPHP | 1136 Messages

08 juil. 2009, 16:47

Et bien le principe est assez simple ,

le client clique sur j'ai perdu mon mot de passe ,
Un formulaire demande son identifiant "login".
le client valide
Là ton script génère un nouveau mot de passe , écrase l'ancien par ce nouveau ( toujours crypté sha1 / md5 ou autre ), puis l'envoie par mail à l'adresse du client qu'il a enregistré à son inscription sur ton site .
Le client reçoit son nouveau mot de passe par mail , il peut donc maintenant se connecter , et re-modifier son mot de passe ..

Voilà il n'y a plus qu'à .. :D

Bonne continuation
Ch.

Fredy07
Invité n'ayant pas de compte PHPfrance

08 juil. 2009, 21:16

Ce que je veux savoir c'est la méthode avec AES_ENCRYPT et AES_DECRYPT, comment envoyer le vrai mot de passe de l'utilisateur.

ViPHP
ViPHP | 2291 Messages

08 juil. 2009, 21:22

ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Fredy07
Invité n'ayant pas de compte PHPfrance

11 juil. 2009, 20:43

voila la requête que j'ai fait, mais il m'affiche le mot de passe crypte:
$sql = "SELECT * FROM membres WHERE username='$username' AND pass = AES_Encrypt('".$cle."','".$pass."')";

// continue de code ici

	echo $username. ' votre mot de passe est: '.$pass. '<br>';

Mammouth du PHP | 1511 Messages

11 juil. 2009, 20:48

Normal te répondrais-je vu que c'est ce que tu lui demandes...

Fredy07
Invité n'ayant pas de compte PHPfrance

11 juil. 2009, 20:53

Normal te répondrais-je vu que c'est ce que tu lui demandes...
j'ai essaye avec:
$sql = "SELECT * FROM membres WHERE username='$username' AND pass = AES_Decrypt('".$cle."','".$pass."')"; 
et ça me dit que le login est incorrect :roll:

Mammouth du PHP | 1511 Messages

11 juil. 2009, 21:04

Normal, tu lui demandes de trouver l'enregistrement correspondant a la version decryptée d'une mot de passe qui n'est autre que le mot de passe décrypté.
Toute donnée que tu veux obtenir en sortie doit être préalablement choisie dans la clause SELECT.
Or, ici, tu ne demandes nullement a mysql de décrypter ton mot de passe dans la clause SELECT, je me trompe ?

Fredy07
Invité n'ayant pas de compte PHPfrance

12 juil. 2009, 01:30

Normal, tu lui demandes de trouver l'enregistrement correspondant a la version decryptée d'une mot de passe qui n'est autre que le mot de passe décrypté.
Toute donnée que tu veux obtenir en sortie doit être préalablement choisie dans la clause SELECT.
Or, ici, tu ne demandes nullement a mysql de décrypter ton mot de passe dans la clause SELECT, je me trompe ?
Alors c'est quoi la solution de trouver le mot de passe décrypté et l'envoyer par e-mail.

Merci

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

12 juil. 2009, 01:52

La commande "SELECT *" te retourne les valeurs des champs tels qu'ils sont stockés dans ta table et ne fait aucune opération dessus. Si tu veux que MySQL te retourne les mots de passe décryptés, il faut le lui demander explicitement, il ne peut pas le deviner ;)

Code : Tout sélectionner

SELECT AES_Decrypt('".$cle."', pass) FROM ...
Maintenant, il ne semble pas nécessaire dans ton cas de récupérer le mot de passe. Ce qui t'intéresse c'est de vérifier si le mot de passe saisi par l'utilisateur (en clair) correspond à celui qui est en base (crypté).

Il te faut donc soit crypter le mot de passe saisie pour le comparer à celui en base (c'est la solution proposé par stopher et pour laquelle la fonction de cryptage ou une fonction de chiffrage seule est suffisante), soit décrypter celui en base pour pouvoir le comparer à celui saisi.
Dans ton essai (pass = AES_Decrypt('".$cle."','".$pass."')) tu décryptes le mot de passe saisi pour le comparer à celui crypté en base... du coup forcément, il ne droit pas y avoir beaucoup de résultat ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Fredy07
Invité n'ayant pas de compte PHPfrance

12 juil. 2009, 11:48

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.