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

Langage PHP Discussion :

sha1 donne 2 résultats [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 39
    Points : 29
    Points
    29
    Par défaut sha1 donne 2 résultats
    Bonjour

    j'ai encodé préalablement un mot de passe dans la BD avec sha1

    Pour accéder au site, je sélectionne le pass correspondant au login

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "select pwd from tbl_user where login='".$login."'";
    ensuite je compare le pass encodé dans la BD et celui entré par l'utilisateur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($data['pwd']!= sha1($pass)) {
    etc

    ca ne marche pas:

    le pass encodé dans la db (pwd) contient 80 caractères alors que le sha1 fait sur le pass entré par l'utilisateur fait 40 caractères

    merci d'avance

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Quand tu dis "j'ai encodé préalablement un mot de passe dans la BD avec sha1" c'est avec la fonction sha1 de PHP également ou avec une autre fonction (genre l'équivalent dans la requête SQL) ?

    Au passage, pour l'encodage des mots de passe, il vaut mieux utiliser password_​hash et password_​verify.

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    un hash sha1 fait bien 40 caractères donc c'est dans ton insertion qu'il y a eu un problème.

    Mais de toute facon on n'utilise plus sha1 pour les mots de passe :
    http://php.net/manual/fr/faq.passwords.php

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    Merci, oui je sais que sha1 est dépassé, mais j'aimerais comprendre pourquoi ça déjà ça ne marche pas avant d'aller plus loin
    J'ai encodé dans phpMyAdmin, donc j'ai inséré un nouvel utilisateur, et j'ai utilisé la fonction sha1 de phpMyAdmin avec le mot de passe et j'ai exécuté la requête
    c'est ça que je ne comprends pas: pourquoi le sha1 du fichier php ne correspond pas au sha1 de phpMyAdmin, d'autant plus que la variable password est en binary 40

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    peut-être un problème d'encodage... As-tu essayé de faire une insertion via PHP au lieu de PhpMyAdmin ?

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    non, par contre la requête de phpMyadmin est celle-ci, elle ajoute un "0x" devant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE `mabase`.`tbl_user` SET `pwdsha` = SHA1(0xmotdepasse) WHERE `tbl_user`.`ID` = 1;
    et si j'entre ce "0x" avec le mot de passe, ca ne marche pas mieux

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'ai fais le test avec phmyadmin 4.5.2 et j'ai bien 40 caractères et pas de 0x dans la requête.

    De quel type est ta colonne ?

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    c'est binary 40

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    un hash en sha1 c'est char(40).

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    Ok ca marche c'est bien ça
    j'ai pourtant vu dans un forum que c'était binary 40

    encore merci de votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. tester si une requete donne des résultats
    Par gui-llaume dans le forum IHM
    Réponses: 5
    Dernier message: 12/12/2007, 20h39
  2. 2 executions d'un programe C graphique avec SDL me donne des résultats différents
    Par Brin d'if dans le forum Développement 2D, 3D et Jeux
    Réponses: 4
    Dernier message: 03/12/2007, 11h21
  3. [SQL] Multiplication après requête qui donne plusieurs données en résultats
    Par Yagami_Raito dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 04/06/2007, 12h34
  4. Quelle formule donne ces résultats
    Par Vincdeladrome dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 18/12/2006, 13h34
  5. crc32() donne un résultat négatif
    Par Hal2001 dans le forum Langage
    Réponses: 1
    Dernier message: 19/04/2006, 19h11

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