Authentification

Résolu/Fermé
laurent2403 Messages postés 80 Date d'inscription jeudi 11 novembre 2010 Statut Membre Dernière intervention 23 février 2020 - 1 nov. 2012 à 05:30
laurent2403 Messages postés 80 Date d'inscription jeudi 11 novembre 2010 Statut Membre Dernière intervention 23 février 2020 - 2 nov. 2012 à 22:07
Bonjour,


voila mon soucis, j'enregistre mon nom et mdp sur un txt ,comme je dois créer une petite fonction de cryptage pour mon mdp sous forme de password ,alors je le crypte en le parsant en entier , et le multiplie par 14 ,le reparse en string et tout ça va se loger dans mon txt ,et je suis contant (car prog débutant) mais le soucis ,c'est a la relecture de mon fichier dans ma fenêtre d'authentification ,il ne veut pas reconnaitre mon mdp ,quelqu'un pourrais m'aider s'il vous plait ,je rappel que je suis débutant...
merci beaucoup,voici mon code :

package projet;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JTextField;
import java.awt.Color;
import javax.swing.SwingConstants;
import javax.swing.JPasswordField;
import javax.swing.JButton;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;

import java.io.IOException;

public class FenCreerCompte extends JFrame {

// attributs non graphiques
private String nomFichier = "Comptes.txt";

// attributs graphiques
private JPanel contentPane;
private JLabel lblNom;
private JLabel lblMdp;
private JTextField jTXT_Nom;
private JLabel jLAB_Message;
private static JPasswordField jPWD_MDP;
private JButton jBTN_OK;
private JButton btnOk;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
FenCreerCompte frame = new FenCreerCompte();
frame.setVisible(true);
// centrer la fenêtre :
frame.setLocationRelativeTo(null);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public FenCreerCompte() {
setFont(new Font("Dialog", Font.PLAIN, 12));
setTitle("Cr\u00E9ation de compte");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBackground(Color.GRAY);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
contentPane.add(getLblNom());
contentPane.add(getJTXT_Nom());
contentPane.add(getLblMdp());
contentPane.add(getJPWD_MDP());
contentPane.add(getJLAB_Message());
contentPane.add(getJBTN_OK());

}

private JTextField getJTXT_Nom() {
if (jTXT_Nom == null) {
jTXT_Nom = new JTextField();
jTXT_Nom.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
jLAB_Message.setVisible(false);
}
});
jTXT_Nom.setFont(new Font("Tahoma", Font.PLAIN, 22));
jTXT_Nom.setBounds(161, 49, 229, 28);
jTXT_Nom.setColumns(10);
}
return jTXT_Nom;
}

private JPasswordField getJPWD_MDP() {
if (jPWD_MDP == null) {
jPWD_MDP = new JPasswordField();
jPWD_MDP.setBounds(161, 110, 229, 28);
// Click >> Message : saisir 4 chiffres
jPWD_MDP.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
jLAB_Message.setVisible(true);
}
});
// Gestion de la frappe d'un caractère clavier
// (saisie et contrôle caractère par caractère)
jPWD_MDP.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent arg0) {
controleMDPcar(arg0);
}
});
}
return jPWD_MDP;
}

// Contrôle saisie du MDP caractère par caractère
public void controleMDPcar(KeyEvent arg0) {
// on utilise la gestion des exceptions
// pour contrôler si la saisie convient
try {
// Problème du clavier sans pavé numérique:
// shift + nombre : ERREUR pour le shift
// >> ESSAYER AVEC "int nbentier = arg0.getKeyCode();"
char carAscii = arg0.getKeyChar();

// ? conversion char >> int ??
// on passe par la conversion string >> int
String strChiffre = Character.toString(carAscii);
@SuppressWarnings("unused")
int chiffre = Integer.parseInt(strChiffre);

// AUTRES VERIFICATIONS A FAIRE : différent de zéro
// et mot de passe de 4 chiffres

} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Saisir un chiffre !!!");
jPWD_MDP.setText("");
}
}

// ----------------------------------------------------------

private JLabel getLblNom() {
if (lblNom == null) {
lblNom = new JLabel("Nom");
lblNom.setFont(new Font("Tahoma", Font.BOLD, 22));
lblNom.setBounds(56, 39, 68, 46);
}
return lblNom;
}

private JLabel getLblMdp() {
if (lblMdp == null) {
lblMdp = new JLabel("MDP");
lblMdp.setFont(new Font("Tahoma", Font.BOLD, 22));
lblMdp.setBounds(56, 96, 68, 46);
}
return lblMdp;
}

private JLabel getJLAB_Message() {
if (jLAB_Message == null) {
jLAB_Message = new JLabel("Saisir 4 chiffres compris entre 1 et 9");
jLAB_Message.setHorizontalAlignment(SwingConstants.RIGHT);
jLAB_Message.setForeground(Color.WHITE);
jLAB_Message.setFont(new Font("Tahoma", Font.PLAIN, 18));
jLAB_Message.setBounds(96, 144, 298, 35);
// pour masquer à l'ouverture le message sur les chiffres
jLAB_Message.setVisible(false);
}
return jLAB_Message;
}

private JButton getJBTN_OK() {
if (jBTN_OK == null) {
jBTN_OK = new JButton("OK");
jBTN_OK.setBounds(237, 194, 89, 23);
jBTN_OK.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {

// 1. vérifier si tous les champs ont été saisis
if (verifSaisieChamps()) {

// 2.1. vérifier si le fichier "comptes.txt" existe
verifFichier();
// 2.2. vérifier si le nom n'existe pas déjà
parcoursFichier();
// 3. on ajoute les données (points 1 et 2 vérifiés)
ajouter();
} else {
JOptionPane.showMessageDialog(null,
"Renseigner tous les champs");
// + A faire : si un champ sur les 2 a été renseigné,
// l'effacer
}
}
});
}
return jBTN_OK;
}

// 1. vérifier si tous les champs ont été saisis
private boolean verifSaisieChamps() {
boolean saisieChamps = false;
// getPassword() renvoie un tableau de char
// que je convertis en String
String strMDP = new String(jPWD_MDP.getPassword());
saisieChamps = !jTXT_Nom.getText().equals("") && !strMDP.equals("");
return saisieChamps;
}

// 2.1. vérifier si le fichier "comptes.txt" existe
private void verifFichier() {
File articles = new File(nomFichier);
if (!articles.exists()) {
try {
FileWriter fichier = new FileWriter(nomFichier);
fichier.close();
} catch (IOException e) {
// si le fichier n'existe pas, il sera créé
}
}
}

// 2.2. vérifier si le nom n'existe pas déjà
private boolean parcoursFichier() {
boolean trouve = false;
try {
// création d'un stream
FileReader fichier = new FileReader(nomFichier);
// buffer de sortie (pour accélérer les transferts dans le stream)
BufferedReader buffer = new BufferedReader(fichier);
try {
String nom;
String ligne = buffer.readLine();
while (ligne != null && trouve == false) {
// lecture ligne par ligne
String[] tabChaine = ligne.split(";");
nom = tabChaine[0];
// vérifier si le nom existe
trouve = jTXT_Nom.getText().equals(nom);
ligne = buffer.readLine();
}
if (trouve)
JOptionPane.showMessageDialog(null, "Ce nom existe déjà");
buffer.close();

} catch (IOException e) {
e.printStackTrace();
}

} catch (FileNotFoundException e) {
e.printStackTrace();
}

return trouve;
}

// 3. on ajoute les données (points 1 et 2 vérifiés)
private void ajouter() {
// création d'un stream de sortie
try {
FileWriter fichier = new FileWriter(nomFichier, true);
BufferedWriter buffer = new BufferedWriter(fichier);
buffer.append(jTXT_Nom.getText() + ";");
String strMDP = new String(jPWD_MDP.getPassword());
//Cryptage du mdp
int value = 0;
value = Integer.parseInt(strMDP);
value = value * 4235;
String mdp = "o";
mdp = Integer.toString(value);
buffer.append(mdp);
buffer.newLine();
buffer.close();

} catch (Exception e) {
// TODO: handle exception
}

}
}




et ma fenetre d'authentification


package projet;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JTextField;
import java.awt.Color;
import javax.swing.SwingConstants;
import javax.swing.JPasswordField;
import javax.swing.JButton;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;

import java.io.IOException;

public class FenCreerCompte extends JFrame {

// attributs non graphiques
private String nomFichier = "Comptes.txt";

// attributs graphiques
private JPanel contentPane;
private JLabel lblNom;
private JLabel lblMdp;
private JTextField jTXT_Nom;
private JLabel jLAB_Message;
private static JPasswordField jPWD_MDP;
private JButton jBTN_OK;
private JButton btnOk;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
FenCreerCompte frame = new FenCreerCompte();
frame.setVisible(true);
// centrer la fenêtre :
frame.setLocationRelativeTo(null);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public FenCreerCompte() {
setFont(new Font("Dialog", Font.PLAIN, 12));
setTitle("Cr\u00E9ation de compte");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBackground(Color.GRAY);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
contentPane.add(getLblNom());
contentPane.add(getJTXT_Nom());
contentPane.add(getLblMdp());
contentPane.add(getJPWD_MDP());
contentPane.add(getJLAB_Message());
contentPane.add(getJBTN_OK());

}

private JTextField getJTXT_Nom() {
if (jTXT_Nom == null) {
jTXT_Nom = new JTextField();
jTXT_Nom.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
jLAB_Message.setVisible(false);
}
});
jTXT_Nom.setFont(new Font("Tahoma", Font.PLAIN, 22));
jTXT_Nom.setBounds(161, 49, 229, 28);
jTXT_Nom.setColumns(10);
}
return jTXT_Nom;
}

private JPasswordField getJPWD_MDP() {
if (jPWD_MDP == null) {
jPWD_MDP = new JPasswordField();
jPWD_MDP.setBounds(161, 110, 229, 28);
// Click >> Message : saisir 4 chiffres
jPWD_MDP.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
jLAB_Message.setVisible(true);
}
});
// Gestion de la frappe d'un caractère clavier
// (saisie et contrôle caractère par caractère)
jPWD_MDP.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent arg0) {
controleMDPcar(arg0);
}
});
}
return jPWD_MDP;
}

// Contrôle saisie du MDP caractère par caractère
public void controleMDPcar(KeyEvent arg0) {
// on utilise la gestion des exceptions
// pour contrôler si la saisie convient
try {
// Problème du clavier sans pavé numérique:
// shift + nombre : ERREUR pour le shift
// >> ESSAYER AVEC "int nbentier = arg0.getKeyCode();"
char carAscii = arg0.getKeyChar();

// ? conversion char >> int ??
// on passe par la conversion string >> int
String strChiffre = Character.toString(carAscii);
@SuppressWarnings("unused")
int chiffre = Integer.parseInt(strChiffre);

// AUTRES VERIFICATIONS A FAIRE : différent de zéro
// et mot de passe de 4 chiffres

} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Saisir un chiffre !!!");
jPWD_MDP.setText("");
}
}

// ----------------------------------------------------------

private JLabel getLblNom() {
if (lblNom == null) {
lblNom = new JLabel("Nom");
lblNom.setFont(new Font("Tahoma", Font.BOLD, 22));
lblNom.setBounds(56, 39, 68, 46);
}
return lblNom;
}

private JLabel getLblMdp() {
if (lblMdp == null) {
lblMdp = new JLabel("MDP");
lblMdp.setFont(new Font("Tahoma", Font.BOLD, 22));
lblMdp.setBounds(56, 96, 68, 46);
}
return lblMdp;
}

private JLabel getJLAB_Message() {
if (jLAB_Message == null) {
jLAB_Message = new JLabel("Saisir 4 chiffres compris entre 1 et 9");
jLAB_Message.setHorizontalAlignment(SwingConstants.RIGHT);
jLAB_Message.setForeground(Color.WHITE);
jLAB_Message.setFont(new Font("Tahoma", Font.PLAIN, 18));
jLAB_Message.setBounds(96, 144, 298, 35);
// pour masquer à l'ouverture le message sur les chiffres
jLAB_Message.setVisible(false);
}
return jLAB_Message;
}

private JButton getJBTN_OK() {
if (jBTN_OK == null) {
jBTN_OK = new JButton("OK");
jBTN_OK.setBounds(237, 194, 89, 23);
jBTN_OK.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {

// 1. vérifier si tous les champs ont été saisis
if (verifSaisieChamps()) {

// 2.1. vérifier si le fichier "comptes.txt" existe
verifFichier();
// 2.2. vérifier si le nom n'existe pas déjà
parcoursFichier();
// 3. on ajoute les données (points 1 et 2 vérifiés)
ajouter();
} else {
JOptionPane.showMessageDialog(null,
"Renseigner tous les champs");
// + A faire : si un champ sur les 2 a été renseigné,
// l'effacer
}
}
});
}
return jBTN_OK;
}

// 1. vérifier si tous les champs ont été saisis
private boolean verifSaisieChamps() {
boolean saisieChamps = false;
// getPassword() renvoie un tableau de char
// que je convertis en String
String strMDP = new String(jPWD_MDP.getPassword());
saisieChamps = !jTXT_Nom.getText().equals("") && !strMDP.equals("");
return saisieChamps;
}

// 2.1. vérifier si le fichier "comptes.txt" existe
private void verifFichier() {
File articles = new File(nomFichier);
if (!articles.exists()) {
try {
FileWriter fichier = new FileWriter(nomFichier);
fichier.close();
} catch (IOException e) {
// si le fichier n'existe pas, il sera créé
}
}
}

// 2.2. vérifier si le nom n'existe pas déjà
private boolean parcoursFichier() {
boolean trouve = false;
try {
// création d'un stream
FileReader fichier = new FileReader(nomFichier);
// buffer de sortie (pour accélérer les transferts dans le stream)
BufferedReader buffer = new BufferedReader(fichier);
try {
String nom;
String ligne = buffer.readLine();
while (ligne != null && trouve == false) {
// lecture ligne par ligne
String[] tabChaine = ligne.split(";");
nom = tabChaine[0];
// vérifier si le nom existe
trouve = jTXT_Nom.getText().equals(nom);
ligne = buffer.readLine();
}
if (trouve)
JOptionPane.showMessageDialog(null, "Ce nom existe déjà");
buffer.close();

} catch (IOException e) {
e.printStackTrace();
}

} catch (FileNotFoundException e) {
e.printStackTrace();
}

return trouve;
}

// 3. on ajoute les données (points 1 et 2 vérifiés)
private void ajouter() {
// création d'un stream de sortie
try {
FileWriter fichier = new FileWriter(nomFichier, true);
BufferedWriter buffer = new BufferedWriter(fichier);
buffer.append(jTXT_Nom.getText() + ";");
String strMDP = new String(jPWD_MDP.getPassword());
//Cryptage du mdp
int value = 0;
value = Integer.parseInt(strMDP);
value = value * 4235;
String mdp = "o";
mdp = Integer.toString(value);
buffer.append(mdp);
buffer.newLine();
buffer.close();

} catch (Exception e) {
// TODO: handle exception
}

}
}

3 réponses

Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
Modifié par Heliotte le 1/11/2012 à 07:18
Bonjour laurent2403,
As-tu vérifier que tous les noms d'utilisateurs avec leurs mots de passe sont bien écrit dans le fichier texte ?
Dans le format que tu as prévu
(je le crypte en le parsant en entier , et le multiplie par 14 ,le reparse en string) ?
Car dans ta fonction ajouter(), tu as écrit : value = value * 4235; ... ?
0
laurent2403 Messages postés 80 Date d'inscription jeudi 11 novembre 2010 Statut Membre Dernière intervention 23 février 2020 2
1 nov. 2012 à 11:10
salut Heliotte et merci pour ta réponse ,j'ai finalement trouve mon erreur...
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
1 nov. 2012 à 13:20
Peux-tu mettre le code résolu ? Cela permettra aux autres de s'enrichir.
Merci et bonne programmation
0
laurent2403 Messages postés 80 Date d'inscription jeudi 11 novembre 2010 Statut Membre Dernière intervention 23 février 2020 2
2 nov. 2012 à 22:07
voici les modifs apporte dans le try/catch pour que finalement il décrypte mon mdp,c'est pas de la haute voltige mais pour un débutant que je suis ça tourne et cela fera l'affaire...


try {
String nom = new String();
String mdp = new String(jPWD_MDP.getPassword());
// decryptage
int value = 0;
value = Integer.parseInt(mdp);
String mdp2 = "1";
value = value * 4235;
mdp2 = Integer.toString(value);
String ligne = buffer.readLine();
while (ligne != null && trouve == false) {
// lecture ligne par ligne
String[] tabChaine = ligne.split(";");
nom = tabChaine[0];
mdp2 = tabChaine[1];
// vérifier si le nom et le pseudo existent

trouve = (jTXT_Nom.getText().equals(nom) && (jPWD_MDP
.getText().equals(mdp)));

ligne = buffer.readLine();
}
if (trouve) {
Portefeuille p1 = new Portefeuille(nom);
p1.setVisible(true);
buffer.close();
} else
JOptionPane
.showMessageDialog(null,
"votre pseudo ou/et votre mot de passe n'est pas correcte");

} catch (IOException e) {
e.printStackTrace();
}

} catch (FileNotFoundException e) {
e.printStackTrace();
}

return trouve;
}
0