probleme de cryptage d'une variable... - PHP - Programmation
Marsh Posté le 23-02-2005 à 14:22:40
Normalement, la fonction password() ne doit être utilisée que pour le suivi des comptes MySQL et non pas pour des developpements persos.
Pour ces derniers, c'est normalement sha1() ou md5().
Marsh Posté le 23-02-2005 à 16:25:58
[mode geek]
Je voudrais que l'on observe une minute de silence pour sha1 qui vient de tomber recemment...
[/mode geek]
Si tu veux "comparer" deux passwords, tu n'as pas besoin de l'equivalent php de la fonction PASSWORD de mysql, suffit de l'utiliser dans ta requete.
Par exemple :
Code :
|
Petite remarque concernant l'utilisation de md5. Cette fonction ainsi que sha1() n'est pas faite pour crypter des mots de passe. A la base ces fonctions sont des fonctions de hashage. Or une fonction de hashage est a "sens unique". En effet elle ne permet pas de "decodage". Cela implique quelque chose d'important. Il peut exister deux "passwords" qui ont la meme cle de hashage. Certes le % est faible, mais la possibilite existe.
[petit hs]
Pour la petite histoire, sachez que l'algo sha1 vient de "tomber" il y a quelques jours, en effet grace a un algo, il est desormais possible de trouver un autre contenu qui donne le meme sha1 qu'un autre. C'etait deja possible avant, mais le precedent algo avait besoin de 2^64 essais pour y arriver (plusieurs semaines de calculs). Or le nouveau algo y arrive en 2^59 (c'est de l'ordre de quelques heures (~60 aine d'heures) ). Avec la puissance des ordis, dans une a deux annees, le "cassage" de sha1 sera a la portee de tout le monde... |
[/petit hs]
Si tu veux neanmoins utiliser md5, alors je te recommande l'utilisation d'un "cle". Lors de l'install de ton logiciel tu genere un chaine de char arbitraires. Ensuite, a chaque utilisation de md5, il faudra "ajouter" (ou concactener) cette chaine au password avant de le crypter. De cette facon, on ajoute un facteur "aleatoire" supplementaire.
"L'inconvenient" sera que les mots de passe, ou plutot les md5 ainsi generes, ne seront pas "compatibles" d'un site a un autre (a moins d'utiliser la meme cle, chose qu'il faut eviter, elle doit etre aleatoire, sinon elle sert a rien ).
Marsh Posté le 23-02-2005 à 17:06:50
A partir de mysql 4.1, password() ne donera pas toujours le même résultat à partir du même mot de passe.
A partir de là IL NE FAUT PLUS l'utiliser pour gérer les logins à un site web. Ca ne doit plus servir que pour la gestion des utilisateurs de la base de donnée.
De plus cette fonction sql est propre à mysql, il serait impossible de changer pour une autre base de donnée sans donner un nouveau mot de passe à tous les utilisateurs.
MD5 est certe à sens unique mais elle donne toujours le même résultat à partir de la même chaine de caractére. De plus étant à sens unique, on ne peut pas retrouver le mot de passe initial à partir du résultat. IL est également possible d'utiliser une clé de hashage permettant de réduire grandement les risques de décriptable à base de dictionnaire de mot de passe. Ca me semble donc plus adapté à la gestion des utilisateurs d'un programme php.
Marsh Posté le 23-02-2005 à 17:08:05
ayé!
j'ai trouvé!
en fait je me posais les mauvaises questions et j'étais a cote de la plaque!
en tous cas, merci pour les soluces!
Marsh Posté le 23-02-2005 à 14:13:37
salut les jeunes!
j'ai une question a la con.
je situe le sujet:
j'ai un site web en php qui interroge une base MySQL.
je veux creer une variable qui recupere le mot de passe d'un user mysql.
petit probleme, les mots de passe Mysql sont cryptés en utilisant une fonction qui s'appelle 'PASSWORD'.
donc il faut que je crypte ma variable avant de l'envoyer au serveur.
je sais qu'il existe une fonction PHP qui permet de crypter une chaine de caractere en md5, et donc je me demandais si il existe une fonction qui permet de coder une chaine en respectant les principe de la fonction PASSWORD de Mysql.
Si quelqu'un avait une reponse ca m'aiderait pas mal. Si en plus elle etait positive ca m'aiderait bien. Si en plus quelqu'un avait le nom de la fonction ca me sauverait la vie.
Merci d'avance!