crypter un mot de passe

Eléphanteau du PHP | 19 Messages

19 juil. 2005, 11:51

bonjour je suis tout nouveau sur ce forum et je voudrai savoir comment crypter le mot de passe des menbre pourqu'il ne soit pas comprehensible une fosi enregistrer dans la base de donnée!

on m'a dit d'utuliser la fonction md5() masi je vois pas a quoi elle sert

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

19 juil. 2005, 11:54

on m'a dit d'utuliser la fonction md5() masi je vois pas a quoi elle sert
elle sert à crypter une chaine de caractère, ça doit être pour ça qu'on t'a dit de l'utiliser ;)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 juil. 2005, 11:56

Quand on te donne le nom d'une fonction, va voir la description, c'est le plus objectif et le plus exhaustif des membres de tous les forums :wink:
description de la fonction md5()
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 19672 Messages

19 juil. 2005, 12:04

Attention : md5() comme sha1() ne cryptent pas une chaine de caractère, elles font un hachage et c'est irréversible. Il est donc important de comprendre qu'avec ces fonctions, on membre sera en effet le seul à connaître son mot de passe, mais s'il le perd, il ne sera pas possible de le récupérer, il faudra trouver un moyen pour l'identifier et lui générer un nouveau mot de passe.

Pour le cryptage, il y a des fonctions internes à MySQL qui peuvent être intéressantes car réversibles : AES_ENCRYPT() et AES_DECRYPT() par exemple
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 19 Messages

19 juil. 2005, 12:07

oki je vais aller faire un tour sur ceu que tu vien de me dire!

Eléphanteau du PHP | 19 Messages

19 juil. 2005, 12:12

dans la deuxieme parti : key_str qu'est ce qu'il faut metttre a la palce de ceci eux ont mis password on peut mettre ce qu'on veut le tous c de toujours mettre le meme pour crypter et decrypter ?

et sinon ceci ne s'utulise que dans une requete mysql je ne peut pa sl'utuliser ne plein dans mon code php ?

la fonction encode n'a pas l'air mal non plus je peut l'utuliser en dehors des commande mysql ou pas ?

Mammouth du PHP | 19672 Messages

19 juil. 2005, 12:18

Non, ça se passe coté SQL : tu dois effectivement utiliser une clé de cryptage que tu devras mettre dans un fichier de configuration, le même par exemple où tu as tes informations de connexion (utilisateur de base de données, mot de passe, nom de la base etc...)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 19 Messages

19 juil. 2005, 12:21

tu peut me donner un exemple pour utuliser cette fonction car la je suis vraiment a l'ouest je voie aps comment on peut l'utuliser ![/code]

Mammouth du PHP | 19672 Messages

19 juil. 2005, 12:32

Si tu lis attentivement la page de doc dont je t'ai donné le lien, tu verras des exemples simples :
Vous pouvez utiliser les fonctions AES pour stocker des données sous une forme chiffrée en modifiant vos requêtes:

INSERT INTO t VALUES (1,AES_ENCRYPT("text","password"));
Dans ce cas précis, tu peux voir deux valeurs enregistrées: la clé primaire (1) et le mot de passe qui est crypté au moment de l'enregistrement, ce qui signifie que tu l'envoies en clair vers MySQL et qu'il est crypté par MySQL. La fonction AES_ENCRYPT prend deux parametres : la chaîne à crypter et la clé de chiffrement.

Donc tu dois avoir en fichier de configuration une varibale que tu récupères qui est la clé de chiffrement: ça peut- être un mot ou une phrase plus ou moins longue. Si tu modifies la clé périodiquement, il ne faudra pas oublier de regénérer les mots de passe avec la nouvelle clé bien entendu.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 19 Messages

19 juil. 2005, 12:35

sa j'avai compris cette parti la a part le 1 mais je pence que moi c'est comme si c'ete le login a qui appartient le mot de passe c'est dans l'otre sens que j'ai un blocage dans la phase pour decrypter le code que l'on a enregistrer.

Car dans la donc il ne mette pa sd'exemple pour decrypter le truc !

Mammouth du PHP | 543 Messages

19 juil. 2005, 12:41

hello,
$req = "select champs1, champs2 from table where AES_DECRYPT(champspass,'password')='".$_POST["pass"]."'"; 
par exemple :)

@++

Mammouth du PHP | 19672 Messages

19 juil. 2005, 12:46

AES_DECRYPT prend également deux paramètres: la chaine à décrypter (donc le champ dans la table) et la clé de chiffrement, la même qui a servi lors de l'enregistrement) On a donc avec par exemple une table comprenant un champ id_membre, pseudo_membre et mdp_membre une requête qui ressemblera à :
$sql = "SELECT pseudo_membre WHERE pseudo_membre = ". $pseudo ." AND AES_DECRYPT('". $cle_chiffrement ."', mdp_membre) = '".  $mdp."';";
Dans cet exemple, on supposera que le membre a inscrit son pseudo et son mot de passe dans un formulaire et que tu récupères ces données dans $pseudo et $mdp pour en vérifier la présence dans la base de données. Le retour t'indique s'il y a ou non un résultat.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 543 Messages

19 juil. 2005, 12:49

Oups j'ai oublié le membre dans le where :)

Cyrano tu n'aurais pas inversé les parametres du AES_DECRYPT() ?

@+

Mammouth du PHP | 19672 Messages

19 juil. 2005, 13:01

Cyrano tu n'aurais pas inversé les parametres du AES_DECRYPT() ?
Exact, bien vu, désolé :oops:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 19 Messages

19 juil. 2005, 13:41

merci beaucoup a vous deux je m'endormirai moins con que se matin !