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

Android Discussion :

Hashage MD5 entre Android et MySQL


Sujet :

Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 32
    Points : 19
    Points
    19
    Par défaut Hashage MD5 entre Android et MySQL
    Bonjour,

    J'ai un petit souci avec le hashage md5.
    Au lancement de mon application je demande à l'utilisateur d'entrer son adresse email et son mot de passe. Ensuite je hash le mdp en md5 pour comparer le couple adresse email/mdp avec ceux dans une base de données distante.

    Voilà comment je m'y prend pour le hashage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    MessageDigest md = MessageDigest.getInstance("MD5");
    md.update(pwd.getBytes());
    byte messageDigest[] = md.digest();
    StringBuffer hexString = new StringBuffer();
    for (int i=0; i<messageDigest.length; i++)
        hexString.append(Integer.toHexString(0xFF & messageDigest[i]));
    String md5pwd = hexString.toString();
    Quand j'ai testé j'ai pris comme mdp "mikado" (j'étais inspiré). Le hashage côté client me donne ce résultat "ecfb28ce6126d098db1132e51579836" alors que quand j'ai créé mon champs dans la base de données avec la fonction md5, mysql m'a donné cette valeur "ecfb28ce6126d0980db1132e51579836"

    En faisant des recherches, j'ai vu que certains précisaient l'encodage au moment de faire le getBytes(). Est ce que mon problème vient de là ? Sur la base de données j'ai tout laissé par défaut alors je suis en latin1_swedish_ci

    Merci d'avance pour votre aide,
    Olivier

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Integer.toHexString ne met pas de 0 en tête de chaîne. Donc

    11 donnera A (et pas 0A)
    Du coup, vu ton code, c'est là que tu perd des 0


    Par contre, donne une accès direct à une base de données mysql distante sur une appareil android.... Bonjour la sécurité . Tous les utilisateurs ont donc sur leur appareil le mot de passe maître pour accéder à mysql....

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    Merci, c'était bien ça

    Citation Envoyé par tchize_ Voir le message
    Par contre, donne une accès direct à une base de données mysql distante sur une appareil android.... Bonjour la sécurité . Tous les utilisateurs ont donc sur leur appareil le mot de passe maître pour accéder à mysql....
    En fait je ne fais pas comme ça, mais c'est peut être pas mieux...
    Donc ici l'utilisateur entre son adresse email et son mdp, je fais un hash en md5 du mdp puis je fais une requête http vers un script php qui lui s'occupe de la connexion à la bd et de faire la requête sql pour savoir si on connait cet utilisateur. Comme ça personne ne voit le mot de passe de la bd.

    Par contre il me reste un doute. J'ai pas vraiment fait de sécurité en cours mais je me souviens du cas du "man in the middle" et vu ce que je fais je suis complètement vulnérable à ce genre d'attaque, non ?

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Oui, complètement. Pour éviter le man in the middle, le plus simple est de faire du https.

    Par contre, tu ne devrais pas coder le mot de passe en MD5 du coté client. C'est coté serveur qu'on fait ça, pour protéger la base, et en général en rajoutant un SALT pour éviter, si la base de données de mots de passe tombe en de mauvaises main, de se faire décoder les mots de passe.


    Avec ton code, si je chope la base, comme tu attends un MD5, je n'ai plus qu'à envoyer le MD5 que j'ai trouvé dans la base. Si tu code coté serveur, je dois d'abord commencer par décoder le md5 (ce qui sera difficile si tu as utilisé un SALT).

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    Merci bien à vous. Je vais regarder comment faire tout ça maintenant

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/03/2015, 23h45
  2. Connexion entre Android et MySQL
    Par analystedodo dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 28/11/2012, 21h15
  3. Poblème de connexion entre Android et MySQL
    Par amalmanel dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 25/03/2012, 09h30
  4. Problème de connexion entre Android et MySQL via les Web Services
    Par amalmanel dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 22/03/2012, 02h36
  5. Pb de connection entre Delphi7 et MySql 4.0.x
    Par nicang dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/04/2004, 18h08

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