AES_ENCRYPT et AES_DECRYPT

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : AES_ENCRYPT et AES_DECRYPT

par bunk » 22 oct. 2005, 18:29

OK alors autant pour moi ! j'etais plus avec les bonnes pages.

et donc je crois que le pb est reglé.

voila les bonne requete :

insertion :
		$sql = "INSERT INTO gesten_utilisateur(ID_UTILISATEUR, NOM, PRENOM, PSEUDO, MOT_DE_PASSE, MAIL) VALUES('','$nom','$prenom','$login_aj', AES_ENCRYPT('". $mdp_aj ."', '". $cle ."') ,'$mail')";
		mysql_query($sql) or die('Impossible d\'inserer les valeurs dans la table notes');
modification :
$sql .= "UPDATE gesten_utilisateur
SET NOM='$nom', PRENOM='$prenom', PSEUDO='$login_aj', MOT_DE_PASSE= AES_ENCRYPT('". $mdp_aj ."', '". $cle ."'), MAIL='$mail' WHERE ID_UTILISATEUR= $id_utilisateur ";
$req = mysql_query($sql) or die('Impossible de modifier l\'utilisateur');
Merci a toi Cyrano d'avoir pris le temps de tester !

par Cyrano » 22 oct. 2005, 18:28

La requête générée animal, je le connais le code :evil: On va pas y rester jusqu'à Noël quand même.

par bunk » 22 oct. 2005, 18:25

Alors voila la requette executé pour le formulaire d'ajut :
		$sql = "INSERT INTO gesten_utilisateur(ID_UTILISATEUR, NOM, PRENOM, PSEUDO, MOT_DE_PASSE, MAIL) VALUES('','$nom','$prenom','$login_aj', AES_ENCRYPT('. $mdp_aj .', '. $cle .') ,'$mail')";
		mysql_query($sql) or die('Impossible d\'inserer les valeurs dans la table notes');
et voila celle pour la modification :
$sql .= "UPDATE gesten_utilisateur
SET NOM='$nom', PRENOM='$prenom', PSEUDO='$login_aj', MOT_DE_PASSE= AES_ENCRYPT('. $mdp_aj .', '. $cle .'), MAIL='$mail' WHERE ID_UTILISATEUR= $id_utilisateur ";
$req = mysql_query($sql) or die('Impossible de modifier l\'utilisateur');
la var $cle arrive d'un include (pour que se soit sur que c'est la même partout) j'ai verifié elle est lu.

Tu pense queca viendrait de la ?

par Cyrano » 22 oct. 2005, 18:21

Fais afficher la requête du formulaire et colle moi ça ici.

par bunk » 22 oct. 2005, 17:55

ben oui mais ca fonctionne que si je fais la requete d'insertion dans phpmyadmin et pas via mes formulaires

ca risque d'etre tres vite inutilisable

par Cyrano » 22 oct. 2005, 17:54

Ben si ça fonctionne, c'est tout ce qu'on veut non ?

par bunk » 22 oct. 2005, 17:53

J'ai vidé la table, j'ai recrée par mon formulaire pui j'ai testé l'hautentification, pas mieux.

j'ai fai un UPDATE du compte utilisateur a l'aide de phpmyadmin avec :
UPDATE gesten_utilisateur SET MOT_DE_PASSE= AES_ENCRYPT('laurie', 'kakalouette') WHERE PSEUDO = 'ju'
et la l'hautentification semble fonctionner. (j'ai essayé avec des mot de passe "bidon")

Le code php ne semble pas etre bon mais cette fois ci dans ma page ajour et modification

qu'en penses tu ?

par Cyrano » 22 oct. 2005, 17:49

C'est normal l'affichage, mais maintenant, vire le contenu, refais une insertion et reteste la vérification.

par bunk » 22 oct. 2005, 17:47

le type chez moi est Varchar(30), je viens de changer pour blob du coup il m'affiche [BLOB - 16 Octets] dans ma table, c'est normal ?

je pense qu'ila une erreur aileur encore

par Cyrano » 22 oct. 2005, 17:44

Quel est le type de champ de ta colonne mot-de-passe dans ta base ? Pour utiliser AES_ENCRYPT, il faut un type BLOB: si tu as un champ avec un autretype, il est possible que les informations aient été tronquées à l'insertion et ne sont donc logiquement pas reconnues lors de la récupération.

En faisant exactement comme ej t'ai indiqué, tout fonctionne chez moi.

par Cyrano » 22 oct. 2005, 17:26

BOn, je vais faire des tests, ce n'est pas normal.

par bunk » 22 oct. 2005, 17:19

J'ai verifié et coriger pas mal de problèmes sur l'ensemble de mes pages en esperant coriger ce problème de corespondance mais rien, je me demande si ce n'est pas dans ma page login.php

J'ai toujours mon NULL dans phpmyadmin

comment faire pour voir ce qui se passe réellement ? merci

par bunk » 22 oct. 2005, 15:12

En fait j'etais parti sur 2 requetes parcque ce que tu me propose j'avais déjà essayé mais le mot de passe dans le WHERE n'est apparement pas crypté donc il ne comprend pas.

exemple le mot de passe est : essai

ce qui ne marche pas :
$sql = "SELECT *
        FROM gesten_utilisateur
        WHERE PSEUDO = '". $pseudo ."'
        AND MOT_DE_PASSE = AES_ENCRYPT('". $mdp ."', '". $cle ."')"; 
ce qui marche enfin je croyais (ecrit en fixe) :
$sql = "SELECT *
        FROM gesten_utilisateur
        WHERE PSEUDO = '". $pseudo ."'
        AND MOT_DE_PASSE = '„6sŽcÃBàô¸bñø¤—' ";
Dans le deuxième cas le mot de passe n'est plus verifié et donc n'importe quoi passe.

Avec 2 requetes je me disais que je pourrais recuperer dans une variable le mot essai crypté que mettrais dans le WHERE pour faire la vérification. Mon résonnement n'est peux être pas logique ?

Ceci dit j'ai essayé de faire 2 requetes mais je ne parvenanit pas en fesant un echo, a afficher le mdp crypté mais la premiere solution me parait pourtant logique, il faudrait que je puisse afficher ce qu'il fait pour voir si il crypte bien

(désolé j'ai effacé par erreur, je venais de me rendre compte que je disais des bétises)

par Cyrano » 22 oct. 2005, 15:10

C'est normal que si tu affiches la requête, le mot de passe soit en clair: AES_ENCRYPT, c'est du SQL, pas du PHP. Donc pour le test, tu peux en effet le faire en deux requête pour voir au juste si tu obtiens les correspondances, mais en pratiques, c'est une requête de trop. Ça doit normalement fonctionner correctement avec l'unique requête proposée.

par Cyrano » 22 oct. 2005, 14:53

Pourquoi le faire en deux requête quand une seule suffirait ?
<?php
$sql = "SELECT ID_UTILISATEUR, NOM, PRENOM, PSEUDO, MOT_DE_PASSE, MAIL 
        FROM gesten_utilisateur 
        WHERE PSEUDO = '". $pseudo ."' 
        AND MOT_DE_PASSE = AES_ENCRYPT('". $mdp ."', '". $cle ."')";
?>