IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Chiffrer / déchiffrer mon mot de passe


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Par défaut Chiffrer / déchiffrer mon mot de passe
    Bonjour,

    J'utilise AES_ENCRYPT pour crypter le mot de passe, comment faire pour le décrypter et l'envoyer aux utilisateurs?

    La requête utilisée est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "SELECT * FROM membres WHERE username='$username' AND pass = AES_Decrypt('".$cle."','".$pass."')";
    Et comme résultat il m'affiche le message qu'il est impossible de se connecter.

    Merci

  2. #2
    Membre éprouvé Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 874
    Par défaut
    Bonjour.

    Le prototype de ta fonction est : AES_DECRYPT(crypt_str,key_str)

    Ce qui donne plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "SELECT * FROM membres WHERE username='$username' AND pass = AES_Decrypt('".$pass."','".$cle."')";

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Par défaut
    Il me donne le message "Impossible de se connecter"

  4. #4
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Par défaut
    Essaye avec cette syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM membres WHERE username='" . $username . "' AND pass='" . AES_Decrypt($cle, $pass) . "'";
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Par défaut
    voila le resultat:

    Fatal error: Call to undefined function aes_decrypt() in forms.php on line 33

  6. #6
    Membre émérite
    Homme Profil pro
    Touche à tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Touche à tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 811
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM membres WHERE username='" . $username . "' AND pass='" . AES_Decrypt($cle, $pass) . "'";
    fait référence à AES_Decrypt comme étant une fonction du php.

    Le message impossible de se connecter me paraît bizzare. Un peu plus de code Php serait nécessaire pour voir clair. Est-ce que tu te connectes à ta base de données? As-tu essayé une autre requête à la place (un SELECT simple)?

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    <?php
     
    $cle = 'ased123fhgf';
     
    $sql = "SELECT * FROM membres WHERE username='" . $username . "' AND pass='" . AES_Decrypt($cle, $pass) . "'";
    $resultat = mysql_query($sql) or die ('Impossible de selectionner: ' .mysql_error());
    $total = mysql_num_rows($resultat);
    $rows = mysql_fetch_array($resultat);
    {
    	 	$username = $rows['username'];
     		$pass = $rows['pass'];
    }
     
    if ($total)
    {
    	echo 'Bienvenu '.$username. '<br>';
    	echo 'Votre mot de passe est: '.$pass;
     
    }
    else
    {
    	echo 'Impossible de se connecter';
    }
    ?>

  8. #8
    Membre émérite
    Homme Profil pro
    Touche à tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Touche à tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 811
    Par défaut
    Bonjour,
    Il te manque a priori un mysql_connect et un mysql_select_db.

  9. #9
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Par défaut
    Citation Envoyé par kabkab Voir le message
    Bonjour,
    Il te manque a priori un mysql_connect et un mysql_select_db.
    Je n'ai aucun problème au niveau de connexion, j'ai un fichier config.php, le problème que je rencontre est le décryptage du mot de passe afin de l'envoyer aux utilisateurs.

  10. #10
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Je vais tenter ma chance rapidement. Je suppose qu'a la création du compte, tu as inséré le nouveau login ainsi que le mot de passe chiffré avec AES?
    Dans ce cas, tu sembles vouloir "vérifier" que le couple login/mot de passe est bon, il faut donc que tu chiffres avec AES le mot de passe pour le comparer a la valeur actuelle dans ta base de données et non que tu le déchiffres

    EDIT: par contre si ce que tu veux c'est renvoyer le mot de passe décrypté à l'utilisateur, alors il faut que tu changes ta requete pour récupérer le mot de passe (et non le rechercher dans la base)
    quand tu l'as récupéré, alors là tu le décryptes avec AES.

  11. #11
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Par défaut
    Citation Envoyé par koopajah Voir le message
    Je vais tenter ma chance rapidement. Je suppose qu'a la création du compte, tu as inséré le nouveau login ainsi que le mot de passe chiffré avec AES?
    Dans ce cas, tu sembles vouloir "vérifier" que le couple login/mot de passe est bon, il faut donc que tu chiffres avec AES le mot de passe pour le comparer a la valeur actuelle dans ta base de données et non que tu le déchiffres

    EDIT: par contre si ce que tu veux c'est renvoyer le mot de passe décrypté à l'utilisateur, alors il faut que tu changes ta requete pour récupérer le mot de passe (et non le rechercher dans la base)
    quand tu l'as récupéré, alors là tu le décryptes avec AES.
    Alors comment faire cette requête pour déchiffrer le mot de passe et l'envoyer

  12. #12
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Tu commences par faire une requête pour récupérer le mot de passe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT pass FROM membres WHERE username='" . $username . "'";
    Ensuite tu récupères le résultat et tu le déchiffres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $resultat = mysql_fetch_assoc($sql);
    $pass_decrypte = AES_Decrypt($cle, $resultat['pass']);
    Ensuite soit tu "mailes" le pass decrypté a l'utilisateur si ton but est de lui rendre le mot de passe. Soit tu vérifies qu'il est égal à celui saisi.

  13. #13
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Par défaut
    Citation Envoyé par koopajah Voir le message
    Tu commences par faire une requête pour récupérer le mot de passe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT pass FROM membres WHERE username='" . $username . "'";
    Ensuite tu récupères le résultat et tu le déchiffres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $resultat = mysql_fetch_assoc($sql);
    $pass_decrypte = AES_Decrypt($cle, $resultat['pass']);
    Ensuite soit tu "mailes" le pass decrypté a l'utilisateur si ton but est de lui rendre le mot de passe. Soit tu vérifies qu'il est égal à celui saisi.
    Fatal error: Call to undefined function aes_decrypt() lost_passwd_check.php on line 38

    line38: $pass_decrypte = AES_Decrypt($cle, $resultat['pass']);

  14. #14
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Par défaut
    Logiquement si tu as crypté le mot de passe à l'insert avec une fonction mysql, pour comparer il faut que tu crypte aussi les données envoyées.

    Soit un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT bidule FROM table WHERE chose = AES_ENCRYPT( "machinchouette" )
    Et pour récupérer le pass :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT AES_DECRYPT( chose ) FROM table WHERE truc = "bidule"

  15. #15
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Par défaut
    Citation Envoyé par Petibidon Voir le message
    Logiquement si tu as crypté le mot de passe à l'insert avec une fonction mysql, pour comparer il faut que tu crypte aussi les données envoyées.

    Soit un truc du genre

    SELECT bidule FROM table WHERE chose = AES_ENCRYPT( "machinchouette" )

    Et pour récupérer le pass :

    SELECT AES_DECRYPT( chose ) FROM table WHERE truc = "bidule"
    voila ma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    <?php
     
    $cle = 'ased123fhgf';
     
    $sql = "SELECT pass FROM membres WHERE username='" . $username . "'";
    $resultat = mysql_query($sql) or die ('Impossible de selectionner: ' .mysql_error());
    $total = mysql_num_rows($resultat);
    $rows = mysql_fetch_array($resultat);
    {
    	 	$username = $rows['username'];
     		$pass = $rows['pass'];
    }
     
    if ($total)
    {
    	echo 'Bienvenu '.$username. '<br>';
    	echo 'Votre mot de passe est: '.$pass;
     
    }
    else
    {
    	echo 'Impossible de se connecter';
    }
    ?>

  16. #16
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Bonjour Fredy007,

    Comme on te l'a indiqué juste au dessus, puisque la fonction d'encryption est une fonction MYSQL et non PHP il va falloir l'appeler dans ta requête.

    Tu pourrais essayer comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <?php
    $cle = 'ased123fhgf';
     
    $sql = "SELECT * FROM membres WHERE username='" . $username . "' AND pass = AES_Encrypt(".$cle.", ".$pass."') ";
    $resultat = mysql_query($sql) or die ('Impossible de selectionner: ' .mysql_error());
    $total = mysql_num_rows($resultat);
     
    if ($total)
    {
    	echo 'Bienvenu '.$username. '<br>';
    	echo 'Votre mot de passe est: '.$pass;	
    }
    else
    {
    	echo 'Impossible de se connecter';
    }
    ?>

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/10/2007, 13h50
  2. Modifie mon mot de passe sous vista
    Par verkiki dans le forum Windows Vista
    Réponses: 3
    Dernier message: 21/05/2007, 01h35
  3. Réponses: 1
    Dernier message: 01/05/2007, 16h18
  4. Perdu mon mot de passe Adminis
    Par dachir dans le forum Windows XP
    Réponses: 1
    Dernier message: 20/10/2006, 17h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo