2016-04-23 5 views
1

Ich benutze ipb Forum-Software. Ich habe eine Member-Tabelle mit dem Namen entity und members_pass_hash und members_pass_salt. Ich habe Problem schriftlich Abfrageanweisung Mitgliedauthentifizieren Mitglied durch Datenbank mit Hash/gesalzen Passwort

String Sql="Select * from members where name=? and members_pass_hash=?"; 

zu autorisieren ich weiß, dass dies falsch ist, weil das Kennwort nicht als Klartext gespeichert ist, aber ich habe keine Ahnung, was zu tun ist.

Ich möchte dies in Java tun, und ich kann keine Anleitungen zu diesem Thema finden. Den ganzen Tag gesucht, danke.

Antwort

1

Sie haben einen Ersatz "am Ende des SQL-Befehls Des;. Ist auch mit Ausnahme des mySQL Kommandozeilen-Client nicht erforderlich (möglicherweise einen Fehler je nach Client-Bibliothek verursachen)

Ein gesalzenes Passwort-Hash. . ist in der Regel, indem man das Salz string (manchmal wird es gespeichert als Präfix für die Hash-Passwort), die Berechnung des Salzes und Vergleichen des Ergebnisses

In Pseudo-Code verifiziert:

($id, $salt, $stored_hashed_password) = SELECT id, salt, hashed_password FROM members WHERE name=? 
$entered_hash_password = hash_password($salt, $entered_cleartext_password) 
if ($entered_hash_password == $stored_hash_password) { 
    say "Yeah, you got it!"; 
} else { 
    say "Go away!"; 
} 

der Vergleich muss offensichtlich sein ein Zeichenfolgenvergleich

Update: Sehr einfaches Beispiel über gehasht Passwörter:

Klartext-Passwort: 10 Salz "string": 5 Hash-Funktion: $ unverschlüsselt * $ Salz Gehashte Passwort: 50

Niemand konnte extrahiere das ursprüngliche Passwort aus dem Hash-Passwort. Das Passwort kann 25, 1, 50, 10, 5 sein.

Reale Hash-Funktionen sind viel komplizierter und nicht reversibel.

Die Funktion hash_password() im Pseudocode-Beispiel MUSS verwendet werden, die beim ersten Hashing der Kennwörter für die Speicherung in der Datenbank verwendet wird. Überprüfen Sie die Quellcode-Funktionen für "ändern Sie Ihr Passwort"

+0

ich feste Abfrage, ich habe es in. Java-Datei :) Ich verstehe nicht, wie Hash-Passwort jetzt einrichten? Muss ich die Zeichenfolge, die sie eingeben, in das Hash-Passwort konvertieren? – swipeales

+0

Ich fügte der Antwort noch etwas Text hinzu. Ich denke, dass IPB in PHP geschrieben ist, also sollten Sie dafür gehen. Andernfalls müssen Sie die gleiche Passwort-Hash-Routine in Java neu erstellen. Oder starte mit einer echten Programmiersprache und ignoriere sowohl Java (nur ein Proof-of-Concept für OOP) als auch PHP (Perl Hypertext Preprocessor wie zu ihrer eigenen Homepage);) – Sebastian

+0

danke für das Hinzufügen weiterer Informationen, ja IPB ist in PHP geschrieben, aber Meine Java-Anwendung ist eine Desktop-Anwendung, die Zugriff auf die Forum-Datenbank benötigt. Ich habe viele ipb Foren mit Java-Desktop-App mit Anmeldeinformationen von ipb-Mitglieder-Konto gesehen. Kann ich das auf lange Sicht sowieso einfacher machen? vielleicht Webservice? Schlägst du mir irgendetwas vor? Ich benutze jdbc mysql Treiber für jetzt – swipeales

Verwandte Themen