Moin alle zusammen.
Ich habe eine mySQL-Tabelle mit 3 Feldern (id: INT(11), name:VARCHAR(45), password:VARCHAR(40)), COLLATION ist auf "utf8 - utf-8_unicode_ci" gestellt.
In der Tabelle befinden sich Benutzer mit ihren Passwörtern. Eingetragen sind sie per Hand und nicht via der JAVA-Anwendung. Soll auch möglichst später so sein, da sie Daten eigentlich von einer anderen Instanz kommen. Jedoch sind die Passwörter mittels selbstgeschreibenen Cryptertools AES-codiert, eingetragen.
Ein Eintrag sieht dann in etwa so aus: 1, test, Bv^#�CnM^#�
Nun zu meinem Problem:
Ich verbinde mich mit name und password auf einem Server, der wiederum in der DB nachschaut ob diese kombie vrohanden ist und liefert dann die Anzahl zurück:
rs.getInt() liefert jedoch 0
wenn ich das ganze etwas ändere Funktioniert der logIn:
Dazu ist zusagen, dass user.getPassword() ebenfalls einen verschlüsselten String hält.
Liegt es evtl am Encoding, dass die erste Anfrage kein Ergebnis liefert? Denn wenn das Passwort ja an die Java-Anwendung "übermittelt" wird, entspricht es ja dem user.getPassword(), soll heißen: eigentlich sind sie "gleich".
Hat jemand vielleicht na Ahnung?!
Schonmal vielen Dank für die Hilfe.
Gruß
Sich
Ich habe eine mySQL-Tabelle mit 3 Feldern (id: INT(11), name:VARCHAR(45), password:VARCHAR(40)), COLLATION ist auf "utf8 - utf-8_unicode_ci" gestellt.
In der Tabelle befinden sich Benutzer mit ihren Passwörtern. Eingetragen sind sie per Hand und nicht via der JAVA-Anwendung. Soll auch möglichst später so sein, da sie Daten eigentlich von einer anderen Instanz kommen. Jedoch sind die Passwörter mittels selbstgeschreibenen Cryptertools AES-codiert, eingetragen.
Ein Eintrag sieht dann in etwa so aus: 1, test, Bv^#�CnM^#�
Nun zu meinem Problem:
Ich verbinde mich mit name und password auf einem Server, der wiederum in der DB nachschaut ob diese kombie vrohanden ist und liefert dann die Anzahl zurück:
Java:
ResultSet rs = stmt.executeQuery("SELECT count(*) FROM users WHERE nickname = \"" + user.getName() + "\" and password = \"" + user.getPassword() + "\"");
if (rs.getInt(1) == 1) {
// logIn ausführen
}
rs.getInt() liefert jedoch 0
wenn ich das ganze etwas ändere Funktioniert der logIn:
Java:
ResultSet rs = stmt.executeQuery("SELECT * FROM users WHERE nickname = \"" + user.getName() "\"");
if (rs.getString("password").equals(user.getPassword())) {
// logIn ausführen
}
Dazu ist zusagen, dass user.getPassword() ebenfalls einen verschlüsselten String hält.
Liegt es evtl am Encoding, dass die erste Anfrage kein Ergebnis liefert? Denn wenn das Passwort ja an die Java-Anwendung "übermittelt" wird, entspricht es ja dem user.getPassword(), soll heißen: eigentlich sind sie "gleich".
Hat jemand vielleicht na Ahnung?!
Schonmal vielen Dank für die Hilfe.
Gruß
Sich