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

AWT/Swing Java Discussion :

JPasswordField, comparer les mots de passes.


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 16
    Points : 21
    Points
    21
    Par défaut JPasswordField, comparer les mots de passes.
    Bonjour à toutes et tous,

    Je suis en train de développer un Quizz en Java.
    Pour accéder a la question suivante, mon programme a besoin d'un mot de passe valide que l'utilisateur cherchera dans le bâtiment selon le numero de checkpoint donnée.
    Les premières étapes ont été réalisé (Afficher la question, les reponses, et le numero de checkpoint de la base de donnée selon la reponse donnée par l'utilisateur).

    Cependant j'ai quelque soucis avec l'outil jpasswordfield.
    En effet, il est impossible de vérifier une condition.
    Je passe a ma methode une List de password et essaye de comparer le mot de passe actuelle avec le password saisie.
    (Mon application respecte le model MVC2)

    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
    26
     
        @Override
        public void checkPwd(ArrayList<T_Password> p) {
            if (p == null) {
                System.out.println("Y U DON'T SHOW URSELF ??? : " + p);
            } else {
     
                for (T_Password pwd : p) {
                    System.out.println(pwd.getPassword());
    );
                    jPasswordField = new JPasswordField();
                    char[] monMdp = jPasswordField.getPassword();
                    String converti = monMdp.toString();
     
                    if (converti.equals(pwd.getPassword())) {
                        JOptionPane.showMessageDialog(rootPane, "Good Job ! You'll now access to next question ");
                        refCtrl.suivant();
     
                    } else if (converti != pwd.getPassword()) {
                        JOptionPane.showMessageDialog(rootPane, "Bad Answer, this time U HAVE TO think ! ");
                        System.out.println(pwd.getPassword() + " " + monMdp + " mdp entré : " + 
                                jPasswordField.getPassword() );
                    }
                }
            }
        }
    Impossible d’accéder a la première condition (si le mdp saisie correspond bien au mdp de la base de donnée.

    Voici le resultat en console :

    123 étant le mot de passe correspondant a la réponse selectionné

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     123 [C@119721a6 mdp entré : [C@4ec70c4c
    probablement le cryptage ici qui ressort deux liste de char différentes, pourtant le mot de passe est le même.

    Avez-vous une idée pour comparer ces chars de manière propre ?
    (Je veux comparer le mot de passe saisie dans le JPAsswordField avec le mot de passe de ma base de donnée, chaque reponse a un mot de passe et un numero de checkpoint)
    Je voudrais éviter d'utiliser la méthode getText car elle est déprécier
    tandis que getPassword() ressort une arrayList de char.

    Est-il plus propre de garder une arrayList de char ?
    Comment comparer ces deux éléments et ainsi accéder à la premiere condition dans ma boucle ?

    je vous remercie de votre soutien.

    RetributionX

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Ce n'est pas un problème de cryptage.
    Pour t'aider à comprendre ton problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class Test {
    	public static void main(String[] args) {
    		char[] toto = {'1','2','3'};
    		String tutu = "123";
     
     
    		System.out.println("toto.toString() = " + toto.toString());
    		System.out.println("tutu.toString() = " + tutu.toString());
    		System.out.println("new String(toto) = " + new String(toto));
     
    		System.out.println("tutu.equals(toto.toString()) = " + tutu.equals(toto.toString()));
    		System.out.println("tutu.equals(new String(toto)) = " + tutu.equals(new String(toto)));
    	}
    }
    De plus, il ne faut jamais comparer les valeurs des String avec == ou != mais utiliser equals.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    converti != pwd.getPassword()
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    !converti.equals(pwd.getPassword())
    Au passage cette condition ne sert à rien car tu test déjà si c'est égal avant.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 16
    Points : 21
    Points
    21
    Par défaut JPasswordField, comparer les mots de passes.
    Salut,

    Merci de ton aide.
    Cependant j'ai résolu le problème différemment, j'utilise maintenant un simple JTextField, et ça marche, lorsque je veux faire les memes actions avec un JPasswordField cela ne fonctionne toujours pas.
    Je stock dans un premier temps ma variable dans un char [] que je convertis dans une autre variable en String afin de comparer le mot saisie avec le mot de passe de la base de donnée.

    C'est comme s'il comparait une liste de caractère encrypté avec un simple mot de passe du style "123".
    Voici ce qu'il me sort cette fois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     mdp correct (DB) est : 123
     mdp entré (monTextField) est : [C@45ce30b5
    Je vais cependant tout de même mettre le poste en résolu car j'ai contourner le problème.


    Merci encore.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Ta "conversion" de char[] en String ne doit pas être correcte.


    [C@45ce30b5 => C'est pas du cryptage mais le toString() par défaut d'un Array de type char (CF ma première réponse)

  5. #5
    Membre éprouvé Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Points : 934
    Points
    934
    Par défaut
    Ta "conversion" de char[] en String ne doit pas être correcte.

    ARRAY OF CHAR -> STRING : essaie ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new String (monArray);

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 16
    Points : 21
    Points
    21
    Par défaut ô Dieu Java
    Je te remercie ô puissant Dieu Java.

    Ça marche en fait c'était vraiment simple.
    J'ai encore beaucoup de progrès à faire

    Merci de votre soutien, RetributionX

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 29/06/2010, 11h45
  2. Gérer les mots de passe
    Par Michel38 dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 30/03/2006, 10h49
  3. comment crypter les mots de passe?
    Par JauB dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/11/2005, 16h37
  4. cacher les mots de passes...
    Par youp_db dans le forum C
    Réponses: 7
    Dernier message: 21/10/2005, 00h06
  5. Le dossier qui stock les mots de passe
    Par cartonis dans le forum Sécurité
    Réponses: 21
    Dernier message: 17/08/2005, 12h49

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