MySQL et fonction PASSWOR('...')

MySQL et fonction PASSWOR('...') - SQL/NoSQL - Programmation

Marsh Posté le 03-03-2007 à 21:46:31    

bonjour,
 
je suis en train de créer un site avec un espace privé.  
 
ma table  user dispose d'un champ appelé user_pass qui est paramétré en varchar de 50.
 
lorsque j'insère des données dans cette table ma requete est celle-ci:
 

Code :
  1. INSERT INTO user (..., user_pass,...) VALUES (..., PASSWORD('motdepasse'), ...);


 
je voulais savoir si il était possible de décrypter le mot de passe une fois qu'il est inseré ? j'ai cherché sur le manuel mysql sans réponse ...
 
merci d'avance de votre aide!


Message édité par clem85 le 03-03-2007 à 21:57:24
Reply

Marsh Posté le 03-03-2007 à 21:46:31   

Reply

Marsh Posté le 05-03-2007 à 09:35:37    

UP SVP, personne ne sait si sa ne peut pas se décrypter, un peu comme le md5 ??

Reply

Marsh Posté le 05-03-2007 à 10:42:22    

Password ne se décrypte pas... utilise plutot une des fonctions de chiffrement parmi celles-ci

Reply

Marsh Posté le 06-03-2007 à 09:11:50    

En même temps pour un mot de passe tu n'as pas nécessairement besoin de pouvoir récupérer le dit mot de passe.. Il te suffit juste de comparer les chaînes aprés Hash/cryptage.
 
et puis Mysql à partir de la version 4.2 permet d'utiliser un encryptage/decryptage
AES_ENCRYPT(str,key_str)
AES_DECRYPT(crypt_str,key_str)
 
 
en bref, regarde la doc... il y a plétorre de solutions ;)

Reply

Marsh Posté le 07-03-2007 à 01:17:52    

oui c'était juste pour renvoyer le mot de passe a un utilisateur qui l'aurais perdu ...
 
merci de l'aide, je vais chercher avec les pistes que vous m'avez donné !

Reply

Marsh Posté le 07-03-2007 à 12:07:20    

le mieux pour renvoyer un mot de passe perdu, c'est en fait d'en régénérer un nouveau.

 

Souvent les mots de passe tels qu'ils sont stockés ne sont pas cryptés mai hashés (md5 ou autre). Comme ça ils sont illisibles en cas de piratage de la base, mais on peut vérifier que celui entré par l'utiliseur concorde avec ce qui se trouve dans la base.

 

edit : je vois que tu utilises la fonction password de mysql pour générer tes mots de passe. Il me semble que c'est déconseillé, cette fonction devrait juste servir pour la gestion en interne des mdp du serveur sql. Mais je me trompe peut être, moi je n'ai jamais travaillé avec.

Message cité 1 fois
Message édité par TotalRecall le 07-03-2007 à 12:52:42

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 07-03-2007 à 15:22:56    

TotalRecall a écrit :


edit : je vois que tu utilises la fonction password de mysql pour générer tes mots de passe. Il me semble que c'est déconseillé, cette fonction devrait juste servir pour la gestion en interne des mdp du serveur sql. Mais je me trompe peut être, moi je n'ai jamais travaillé avec.


 
Non, tu ne te trompe pas... C'est vrai qu'il est déconseillé d'utiliser PASSWORD() pour crypter les mots de passe. les fonctions AES_ENCRYPT() et AES_DECRYPT() sont parmi les mieux indiquées, d'autant que l'utilisation d'un salt rend le piratage plus difficile

Reply

Marsh Posté le 07-03-2007 à 21:02:38    

pour AES_ENCRYPT et AES_DECRYPT, j'ai compris et je pense que je me débrouillerait avec le manuel mysql mais pour la fonction SALT, c'est quoi , une fonction mysql également ? je n'ais rien trouvé sur php.net ou mysql.com ...  
 
merci de m'éclairer

Reply

Marsh Posté le 12-03-2007 à 11:20:24    

Non, non, le salt, c'est le grain de sel (souvent une chaine aléatoire) qui complique le travail des éventuels hackers qui voudraient décrypter ton mot de passe...

Reply

Marsh Posté le 13-03-2007 à 13:40:01    

L'inconvénient du salt, c'est que tu es obligé de le stocker quelque part. Et un salt unique, peut perdre de son intérêt.

Reply

Marsh Posté le 13-03-2007 à 13:40:01   

Reply

Marsh Posté le 16-03-2007 à 08:58:35    

quelqu'un peut me montrer comment on peut appliquer AES_DECRYPT SVP car j'arrive à crypter avec AES_ENCRYPT dans un champs BLOB comme conseillé dans le manuel mysql mais je n'arrive pas a sortir mon texte crypté.
 
Merci de votre aide

Reply

Marsh Posté le 16-03-2007 à 11:24:19    

ton texte n'est il pas trop long? LA clé est bonne ?
Comme par tester sur des choses simples...

 

un truc de ce genre :

 

INSERT INTO aes VALUES ( AES_ENCRYPT( " un truc ", "cle" ) )

 

SELECT aes_decrypt( champ, "cle" )FROM aes

 

ça doit passer.


Message édité par TotalRecall le 16-03-2007 à 11:24:30

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 23-03-2007 à 08:42:34    

je viens de tester ceci:  
 

Code :
  1. INSERT INTO testclem VALUES ('', AES_ENCRYPT( "un truc", "cle" ) );
  2. SELECT AES_DECRYPT( test, "cle" ) FROM testclem;


 
et cela ne fonctionne pas ... j'ai testé sur une base sur free, je ne pense pas qu'ils aient désactivé uniquement la fonction AES_DECRYPT alors que AES_ENCRYPT fonctionne ...
 
merci de votre aide !

Reply

Marsh Posté le 23-03-2007 à 12:40:15    

aucune raison que ça marche pas, t'es sûr que ton champ s'appelle bien comme ça ? C'est quoi ce '' pour le premier champ, un autoincrement moche ?
en local ça marche pas mieux ? (même si je vois pas la moindre raison pour que free ait qqch contre aes). Et y a un msg d'erreur ?


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 23-03-2007 à 13:37:42    

Free n'a rien contre AES, puisque je l'utilise sans problème sur plusieurs sites! :o

Reply

Marsh Posté le 25-03-2007 à 19:01:38    

Voici la réponse de ma requête:
 

Code :
  1. #1305 - FUNCTION comptefree.AES_DECRYPT does not exist


 
et je confirme, mon ' ' est un autoincrement (moche comme tu dit).
 
oui, j'ai vérifié les noms de ma table et de mon champ. le fait que je l'ai mis en BLOB mon champ ou je rentre mon AES sa aurait pas une incidence même si j'ai vu cela sur le site de mysql ?
Soulmanto, peut-tu confirmer que mes requêtes sont justes s'il te plait ?
 
Merci

Reply

Marsh Posté le 25-03-2007 à 19:20:02    

il te dit qu'il ne trouve pas de fonction avec ce nom là. C'est pas logique, donc il faut chercher ce qui lui fait dire ça : le problème se trouve peut être au niveau de tes arguments, du "test" par exemple. C'est bien le bon nom de champ avec le bon type ?


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 28-03-2007 à 17:02:24    

oui, test est bien le nom de mon champ qui est de type BLOB, quel type me conseillez-vous de mettre ?

Reply

Marsh Posté le 28-03-2007 à 19:14:51    

Blob ça devrait fonctionner sans le moindre pb.
 
Moi je dis fais le même test en local avec exactement le même script sql (create db/table, insert, select). C'est bizarre ton histoire, depuis le début tout devrait marcher. Soit y a une bizarrerie chez free (mouais...) soit tu commets une erreur dont tu ne nous dis rien.


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed