Partage
  • Partager sur Facebook
  • Partager sur Twitter

masterkey pour encrypte le salaire d'un employé

23 avril 2021 à 14:37:29

bonjour je suis entrain de créer un petit programme test pour crypté le salaire d'un employé que l'administration rentre

mais j'arrive  pas a imaginé le code pour utilisé la masterkey(la masterkey de l'admin doit servir pour crypté le salaire)

pour crypté le salaire j'essaie d'utilise l'api blowfish que nous avais donné un de mes professeurs d'informatique

pouvez vous m'aidez s'il vous plait ?

cordialement, 

victor

voici le code :

package TpLoginMotDePasse;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

import javax.swing.JComboBox;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.DefaultComboBoxModel;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.security.Key;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.time.format.DateTimeFormatter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.awt.event.ActionEvent;
import javax.swing.JPasswordField;

public class UserAccount extends JFrame {
	
	private JTextField textField_Nom;
	private JTextField textField_prenom;
	private JTextField textField_Login;
	private JPasswordField passwordField;
	protected JTextField textField_Salaire;
	
	static Connection conn = null;
	static Statement st = null;
	

	public UserAccount() {
		getContentPane().setBackground(new Color(243, 243, 243));
		getContentPane().setLayout(null);

		JLabel lblNom = new JLabel("Nom");
		lblNom.setForeground(new Color(147, 36, 50));
		lblNom.setFont(new Font("Tahoma", Font.BOLD, 12));
		lblNom.setBounds(103, 85, 45, 13);
		getContentPane().add(lblNom);
		this.setBounds(100, 100, 402, 567);

		textField_Nom = new JTextField();
		textField_Nom.setBounds(182, 82, 96, 19);
		getContentPane().add(textField_Nom);
		textField_Nom.setColumns(10);

		JLabel lblPrénom = new JLabel("Pr\u00E9nom");
		lblPrénom.setForeground(new Color(147, 36, 50));
		lblPrénom.setFont(new Font("Tahoma", Font.BOLD, 12));
		lblPrénom.setBounds(103, 135, 58, 13);
		getContentPane().add(lblPrénom);

		textField_prenom = new JTextField();
		textField_prenom.setColumns(10);
		textField_prenom.setBounds(182, 132, 96, 19);
		getContentPane().add(textField_prenom);

		JLabel lblLogin = new JLabel("Login");
		lblLogin.setForeground(new Color(147, 36, 50));
		lblLogin.setFont(new Font("Tahoma", Font.BOLD, 12));
		lblLogin.setBounds(103, 174, 58, 13);
		getContentPane().add(lblLogin);

		textField_Login = new JTextField();
		textField_Login.setBounds(182, 171, 96, 19);
		getContentPane().add(textField_Login);
		textField_Login.setColumns(10);

		JLabel lblMdp = new JLabel("password");
		lblMdp.setForeground(new Color(147, 36, 50));
		lblMdp.setFont(new Font("Tahoma", Font.BOLD, 12));
		lblMdp.setBounds(103, 203, 58, 13);
		getContentPane().add(lblMdp);

		passwordField = new JPasswordField();
		passwordField.setBounds(182, 200, 96, 19);
		getContentPane().add(passwordField);

		JLabel lblrole = new JLabel("Fonction");
		lblrole.setForeground(new Color(147, 36, 50));
		lblrole.setFont(new Font("Tahoma", Font.BOLD, 12));
		lblrole.setBounds(103, 274, 58, 13);
		getContentPane().add(lblrole);

		JComboBox comboBox = new JComboBox();
		comboBox.setForeground(new Color(147, 36, 50));
		comboBox.setBackground(Color.WHITE);
		comboBox.setModel(new DefaultComboBoxModel(new String[] { "administrateur", "user" }));
		comboBox.setBounds(182, 271, 96, 21);
		getContentPane().add(comboBox);

		JLabel lblSalaire = new JLabel("Salaire");
		lblSalaire.setForeground(new Color(147, 36, 50));
		lblSalaire.setFont(new Font("Tahoma", Font.BOLD, 12));
		lblSalaire.setBounds(103, 310, 58, 13);
		getContentPane().add(lblSalaire);

		textField_Salaire = new JTextField();
		textField_Salaire.setBounds(182, 307, 96, 19);
		getContentPane().add(textField_Salaire);
		textField_Salaire.setColumns(10);

		JButton btnConfirmer = new JButton("Confirmer");
		btnConfirmer.setForeground(Color.WHITE);
		btnConfirmer.setBackground(new Color(60, 24, 116));
		btnConfirmer.setBorderPainted(false);
		btnConfirmer.setBounds(173, 368, 105, 21);
		getContentPane().add(btnConfirmer);

		UserAccount user = this;

		btnConfirmer.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Pattern pattern = Pattern.compile("[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}");
				Matcher mat = pattern.matcher(textField_Login.getText());
				if (textField_Login.getText().isEmpty() || passwordField.getText().isEmpty()
						|| textField_prenom.getText().isEmpty() || textField_Nom.getText().isEmpty()
						|| textField_Salaire.getText().isEmpty())
					JOptionPane.showMessageDialog(user, "il faut remplir toutes les champs");
				else if (!mat.matches()) {
					JOptionPane.showMessageDialog(user, "Invalide adresse email");
				} else if (passwordField.getText().length() < 16)
					JOptionPane.showMessageDialog(user, "Le mot de passe doit contenir au moins 16 caractère");
				else {
					try {
						Class.forName("com.mysql.jdbc.Driver");
					} catch (ClassNotFoundException e1) {
						System.out.println("error");
					}
					try {
							conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test2.0", "root", "");
						PreparedStatement st2=conn.prepareStatement("select * from users where email=?");
						st2.setString(1, textField_Login.getText());
						ResultSet d=st2.executeQuery();
						if(d.next() ) 
						{
							JOptionPane.showMessageDialog(user, "l'email existe déjà ");
						} else {
							PreparedStatement st = conn.prepareStatement(
									"insert into users (role,nom,prenom,email,password,salaire) values (?,?,?,?,?,?)");
							st.setInt(1, comboBox.getSelectedIndex());
							st.setString(2, textField_Login.getText());
							try {
								st.setString(3, Hash.hashPassword(passwordField.getText()));
							} catch (Exception e1) {
								// TODO Auto-generated catch block
								e1.printStackTrace();
							}
							st.execute();
							JOptionPane.showMessageDialog(user, "Opération réussi");
						}
					} catch (SQLException e2) {
						JOptionPane.showMessageDialog(user, "Problème de connexion à la base de données");
					}
				}
			}
			
		});
	}
	public class AdminAccount extends UserAccount{
		private Key masterKey;
		
	}
	
	public static void main(String[] args) {
		UserAccount User = new UserAccount();
		User.setVisible(true);
	}
}



-
Edité par VictorHuguet 23 avril 2021 à 14:51:23

  • Partager sur Facebook
  • Partager sur Twitter