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

Composants Java Discussion :

Utilisation d'un JPasswordField pour la connexion à une base de donnée MySQL


Sujet :

Composants Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 96
    Points : 98
    Points
    98
    Par défaut Utilisation d'un JPasswordField pour la connexion à une base de donnée MySQL
    Bonjour,

    J'ai créé une fenêtre pour me connecter à une base de donnée MySQL.
    Pour le mot de passe si j'utilise un champ JPasswordField et que je récupère sa valeur avec getPassword().toString() la connexion échoue.
    Par contre, si j'utilise un champ JTextField avec getText() la connexion réussie.

    J'ai affiché par println les résultats de getText() et getPassword() et effectivement getPassword() ne retourne pas ce que j'ai saisie dans mon champ.

    Y a-t-il un moyen de décrypter la valeur saisie dans un JPasswordField ou bien ce type de champ n'est pas adapté ?

    Merci


    S. Combes

  2. #2
    En attente de confirmation mail
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Octobre 2010
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 501
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonsoir,

    getPassword retourne un tableau de char.
    Pour le transformer en String, on peut utiliser la méthode static String.valueOf.
    Doc

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 96
    Points : 98
    Points
    98
    Par défaut
    Bonjour,

    merci pour la réponse Nudger. Cela fonctionne effectivement

    Par contre, il y a un truc que je ne comprend pas :
    Qu'elle est la différence entre "getPassword().toString()" et String.valueOf(getPassword())" ?

    Pour moi getPassword retourne un char[] qui contient les caractères cryptés.
    Que "getPassword().toString()" retourne les caractères cryptés dans un String : ok. Mais pourquoi diable String.valueOf() arrive à les décrypter ?
    D'ailleurs, dans la doc il est bien précisé "a newly allocated string representing the same sequence of characters contained in the character array argument"


    Merci.


    S. Combes

  4. #4
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 084
    Points
    7 084
    Par défaut
    Les caractères ne sont pas cryptés.
    JPasswordField utilise un tableau plutôt qu'une chaîne de caractère pour permettre la suppression du mot de passe en mémoire dès que possible.
    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    JPasswordField jpf = ....;
    char[] password = jpf.getPassword();
    // J'utilise mon mot de passe
    ...
    // J'enlève tout ça de la mémoire
    for (int i = 0; i < password.length; i++)
    {
      password[i] = '\0';
    }
    La méthode toString() d'un tableau (même de caractère) ne renvoie pas la chaîne que représente le tableau mais ceci.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 96
    Points : 98
    Points
    98
    Par défaut
    Merci pour les précisions.


    S. Combes

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/05/2013, 18h12
  2. Réponses: 0
    Dernier message: 05/12/2011, 16h07
  3. connexion à une base de données mysql depuis c++
    Par btissama4 dans le forum C++
    Réponses: 4
    Dernier message: 16/02/2007, 11h55
  4. créer une boulce pour lire dans une base de donnéé MySQL
    Par pierrot10 dans le forum Administration
    Réponses: 1
    Dernier message: 26/07/2006, 14h21
  5. Connexion à une base de données mysql via access
    Par eautret dans le forum Access
    Réponses: 2
    Dernier message: 07/04/2006, 10h02

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