Ich baue ein Login-System in Java mit MySQL-Datenbank, die Passwörter in der Datenbank sind verschlüsselt. Wenn ich also ein Klartext-Passwort manuell in die Datenbank einfüge, meldet sich das System an, aber es liest die verschlüsselten nicht. Ich möchte, dass mir jemand hilft.Java-Login liest keine verschlüsselten Passwörter
Hier ist, was ich versuchte:
package techtight;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import static javax.management.Query.and;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class myLogin extends JFrame {
public void contentMethod(){
JFrame myframe = new JFrame("login Techtight");
myframe.setLayout(null);
myframe.setSize(200,170);
myframe.setVisible(true);
JTextField txtuser = new JTextField();
JPasswordField txtpass = new JPasswordField();
JButton btnLoging = new JButton("Login");
txtuser.setBounds(40, 20, 120, 25);
txtpass.setBounds(40, 50, 120, 25);
btnLoging.setBounds(40,80, 80, 30);
myframe.add(txtuser);
myframe.add(txtpass);
myframe.add(btnLoging);
///How to code the button
btnLoging.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// connect to the db
try {
Connection conn;
String dbuser = "root";
String dbpassw = "12345";
String databasename = "taxi";
String url = "jdbc:mysql://localhost/taxi";
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url,dbuser,dbpassw);
Statement st = conn.createStatement();
String username = txtuser.getText();
char[] pass = txtpass.getPassword();
String password = new String (pass);
//String password = String.copyValueOf(pass); // converting from array to string
//String password = txtpass.getText();
ResultSet rs = st.executeQuery("SELECT * FROM users where username='" + username + "' and password='" + password + "'");
if(rs.next()){
JOptionPane.showMessageDialog(null, "Login Succesful");
myframe.dispose();// make login for disapear
}else {
JOptionPane.showMessageDialog(null, "Login Failed ");
new Techtight();
}
//JOptionPane.showMessageDialog(null, "okay");
} catch (SQLException ex) {
Logger.getLogger(myLogin.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(myLogin.class.getName()).log(Level.SEVERE, null, ex);
}
}
}); //
}
public static void main (String args[]){
myLogin m = new myLogin();
m.contentMethod();
}
}
Sind Sie sicher, dass dies ein [minimales, vollständiges und überprüfbares Beispiel] (https://stackoverflow.com/help/mcve) ist? – Clijsters
Wenn "Passwort" in der Datenbank verschlüsselt ist, müssen Sie das verschlüsselte "Passwort" in Ihrer Anfrage verwenden. – juvenislux
@humphrey Sie würden das Passwort mit einigen Algo verschlüsseln, müssen Sie Ihr Passwort in diesem Fall auch dann verschlüsseln, dann können Sie vergleichen. –