2016-10-24 2 views
0

Hey aus irgendwelchen Gründen bekomme ich diesen Fehler not a valid sha512_crypt hash jedes Mal, wenn ich versuche, mich auf meiner Anmeldeseite anzumelden.kein gültiger sha512_crypt-Hash Python Flask Error

Stück Register Seite:

   username = request.form['username'] 
       password = sha512_crypt.encrypt((str(request.form['password']))) 
       email = request.form['email'] 

       cur.execute("INSERT INTO users (name,password,email) VALUES (?,?,?)",(username,password,email) 

Stück Anmeldungs ​​Seite:

data = cur.execute("SELECT password FROM users WHERE name= ?", (request.form['username'],)) 

       data = cur.fetchone()[0] 

       if sha512_crypt.verify(request.form['password'], data): 
        session['logged_in'] = True 
        session 

        #etC#etC#etc 

Also, wenn ich in einem Benutzername und Passwort von meiner DB füllen bekomme ich einen Fehler: not a valid sha512_crypt hash In Meine DB gibt es verschlüsselte Passwörter, also funktioniert meine sha256-Verschlüsselung theoretisch.

+0

Wie sieht 'Daten' aus? Kannst du einen Account mit dem Passwort password erstellen und den Hash posten? – Blender

+0

Was meinst du? 'data' ist nur diese SQL-Abfrage und das' fetchone() ' – Julian

+0

Woher weißt du, dass' data' einen gültigen Hash enthält? – Blender

Antwort

1

Sie haben Kennwort Hashes in Ihrer Datenbank erstellt mit sha256_crypt und sha512_crypt, aber Sie verwenden sha512_crypt, um beide zu überprüfen. Das wird nicht funktionieren.

entweder neu erstellen, die Passwörter für Benutzer mit mit sha256_crypt erstellt Hashes (sie beginnen mit $5$), oder verwenden Sie passlib.apps.custom_app_context, die beide überprüft. Hier ein Beispiel aus the docs:

# import the context under an app-specific name (so it can easily be replaced later) 
from passlib.apps import custom_app_context as pwd_context 

# encrypting a password... 
hash = pwd_context.encrypt("somepass") 

# verifying a password... 
ok = pwd_context.verify("somepass", hash) 
+0

Ich bekomme jetzt 2 Fehler. 'Hash konnte nicht identifiziert werden ' – Julian

+0

und:'' ImmutableMultiDict 'Objekt ist nicht aufrufbar' – Julian

+0

@Julian: Ohne Kontext sind diese Fehler bedeutungslos. Bitte destilliere den problematischen Code etwas eigenständig: https://stackoverflow.com/help/mcve – Blender