Page 1 sur 2
crypter un mot de passe
Posté : 19 juil. 2005, 11:51
par caxd
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
Re: crypter un mot de passe
Posté : 19 juil. 2005, 11:54
par ouckileou
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

Posté : 19 juil. 2005, 11:56
par zeus
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
description de la fonction md5()
Posté : 19 juil. 2005, 12:04
par Cyrano
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
Posté : 19 juil. 2005, 12:07
par caxd
oki je vais aller faire un tour sur ceu que tu vien de me dire!
Posté : 19 juil. 2005, 12:12
par caxd
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 ?
Posté : 19 juil. 2005, 12:18
par Cyrano
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...)
Posté : 19 juil. 2005, 12:21
par caxd
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]
Posté : 19 juil. 2005, 12:32
par Cyrano
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.
Posté : 19 juil. 2005, 12:35
par caxd
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 !
Posté : 19 juil. 2005, 12:41
par raptor
hello,
$req = "select champs1, champs2 from table where AES_DECRYPT(champspass,'password')='".$_POST["pass"]."'";
par exemple
@++
Posté : 19 juil. 2005, 12:46
par Cyrano
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.
Posté : 19 juil. 2005, 12:49
par raptor
Oups j'ai oublié le membre dans le where
Cyrano tu n'aurais pas inversé les parametres du AES_DECRYPT() ?
@+
Posté : 19 juil. 2005, 13:01
par Cyrano
Cyrano tu n'aurais pas inversé les parametres du AES_DECRYPT() ?
Exact, bien vu, désolé

Posté : 19 juil. 2005, 13:41
par caxd
merci beaucoup a vous deux je m'endormirai moins con que se matin !