mysql - problèmes avec codage de password

Petit nouveau ! | 4 Messages

29 oct. 2005, 11:04

Bonjour,

J'ai un problème avec le passage d'une base de donnée mysql développée en local sur un serveur web.

J'ai une table d'utilisateurs où il y a notemment un password ( PASSWORD() ) et un login, pour pouvoir se connecter à des parties privées du site. J'avais fait mon développement avec easyphp en local, et tout fonctionnait bien! Mais ensuite quand j'ai voulu balancer le tout sur le serveur web, mon code ne voulait plus reconnaître les pass et les logins déjà introduits...

j'ai alors essayé de recréer des utilisateurs sur le serveur distant, et cela ne fonctionnait toujours pas. En regardant dans la base de donnée j'ai remarqué que les pass nouvellement créés était d'une forme différente: *2C7B88AAEEE49A0 au lieu de 16a1d7522bd7dd5e. Je pense que le problème doit venir de là...

p.s: mon code php d'enregistrement/connection fonctionne très bien, je l'ai déjà utilisé souvent.

Si vous pouvez m'aider, je vous serait très reconnaissant.
Voici ma structure et ma table:

structure

Code : Tout sélectionner

Champ Type Null Défaut id_util smallint(5) Non login varchar(40) Non password varchar(16) Non
contenu:

Code : Tout sélectionner

id_util login password 3 kustolovic *2C7B88AAEEE49A0 4 test 16a1d7522bd7dd5e 5 tontons 51bb8cb0799f112c 6 flickgouv 6225b4e0788ab45b 7 user *2470C0C06DEE42F

Mammouth du PHP | 19672 Messages

29 oct. 2005, 11:14

Quel algorithme de cryptage ou de hachage utilises-tu ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 4 Messages

29 oct. 2005, 11:31

j'utilise la fonction mysql PASSWORD()...

Code : Tout sélectionner

INSERT into uilisateurs(pass) VALUES PASSWORD($pass)
pour l'inroduction dans la base de donnée,

et

Code : Tout sélectionner

SELECT * FROM utilisateurs WHERE login='$login' AND pass=PASSWORD($pass)
pour la connection...

Qu'entends-tu par cryptage? y-a-il quelque chose que je ne maitrise pas dans ce sens?

Mammouth du PHP | 19672 Messages

29 oct. 2005, 11:44

Vérifie si tu utilises la même version de MySQL sur ta machine et chez ton hébergeur. Il est possible que l'exécution de cette fonction diffère d'une version à l'autre :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 4 Messages

29 oct. 2005, 12:07

mysql 4.0.15 en local

et

et sur le serveur:

mysql: 4.1.11

Sur le serveur, j'ai la colonne "Interclassement" dans a structure que je n'avais jamais vue avant, qui est mise par défaut à latin1_swedish_ci

Mammouth du PHP | 19672 Messages

29 oct. 2005, 13:19

l'interclassement ne devrait rien modifier et latin1_swedish_ci correspond à iso-8859-1 : donc le problème est ailleurs

As-tu fait des essais d'inscription avec les mêmes valeurs sur l'un et sur l'autre pour comparer les résultats ? Je veux dire par là: enregistre un utilisateur avec un mot de passe en local, et ensuite fais exactement la même chose en ligne avec les mêmes données. Ensuite, sur l'un comme sur l'autre, récupères les données brutes enregistrées et compare. Si tu n'as pas exactement la même chose, peut-être qu'utiliser à la place une fonction de cryptage comme AES_ENCRYPT() serait plus appropriée et tu auras la même chose puisque l'algorithme est le même (en principe)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 4 Messages

29 oct. 2005, 14:31

En me documentant sur AES_ENCRYPT(), j'ai vu qu'il parlait d'un changement de codage de PASSWORD entre la version 4.0 et 4.1 de mysql. Maintenant sur la vers 4.1 les password sont codés sur 41 octets et non plus 16 comme avant. J'ai donc changé ma colonne en varchar(41) et a fonctionne!
merci bien!

Mammouth du PHP | 19672 Messages

29 oct. 2005, 14:37

J'utilise AES_ENCRYPT et il est recommandé dans la doc d,utiliser un champ de type BLOB pour les stocker, ce que j'ai fait et j'ai la paix de ce coté là
Il vaut mieux éviter d'avoir des champs trop court, si tes données cryptées sont tronquées, elles seront inutilisables..
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: