PHP Passwort Hash Abfrage?

... komplette Frage anzeigen

3 Antworten

Das kommt drauf an welche Codierung deine Datenbank verwendet und wie viele Zeichen dein Feld in der Datenbank lang ist.

Wenn du das Feld auf 60 Zeichen limitiert hast kannst du darin keinen Hash mit mehr 60 Zeichen speichern.

Für den SHA512 Hash benötigst du je nach repräsentation unterschiedliche Längen, wenn du den Wert als Hexadezimal Speicherst brauchst du dazu 128 Zeichen, wenn du ihn als Base64 Speicherst brauchst du 88 Zeichen, wenn du ihn als Bits speicherst brauchst du 512 Zeichen...

Nur als kleine Anmerkung verwende auch noch einen Salt dazu...

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Grosslukass
20.06.2016, 13:05

Danke schonmal für die Antwort!

Also ich benutze den in meiner Datenbank den Typ "Text" der 65.535 Zeichen lang sein kann. Ich weiß jetzt nur nicht ob "Text" = "String" bedeutet, weil es an sich die Codierung "String" nicht gibt.

P.S. Ich verwende phpMyAdmin als für meine Datenbank und der Salt kommt dann am Ende hinzu, wenn das erstmal funktioniert ^^

0


Mit einem blick auf das hier:

$passwordhashed = mysql_query("SELECT password FROM user WHERE username='$username'");$passwordhashedstring = (string)$passwordhashed;


findet sich der Fehler schnell.

Du vergleichst hier das eingegebene Passwort mit der Result ID und nicht mit den PW aus der DB.

$arr_pw = mysql_fetch_array($passwordhashed);
$passwordhashedstring = $arr_pw[0];


 if(password_verify('password', $passwordhashedstring)) {


Sollte hier funktionieren wenn das PW in die DB Spalte gepasst hat.

Alternativ vergleich das ausgelesenen PW aus der DB mit dem gehaschten eingegebenen.

http://pastebin.com/eK2TL2Qa

mfg

Antwort bewerten Vielen Dank für Deine Bewertung

Schau dir mal die PHP-Doku zu mysql_query an. Die Funktion bringt keinen String zurück und damit kann dein Hash nicht stimmen. Zum Debuggen empfehle ich, immer mal die verwendeten Werte mit einem echo ausgeben zu lassen, damit du siehst, wo es klemmt.

Davon abgesehen solltest du von Anfang an wenigstens die MySQLi-Funktion mysqli_query nutzen, da alles andere spätestens ab PHP 7 nicht mehr unterstützt wird.

Der Hinweis von Peter, einen Salt zu nutzen, ist auch wichtig.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Grosslukass
20.06.2016, 13:08

Danke für den Hinweis!

Ich werde die MYSQL-Funktion nochmal überarbeiten ^^

Gibt es denn eine passende Funktion die einen String zurück gibt bzw. kann ich die Rückgabe nicht in String umwandeln?

0

Was möchtest Du wissen?