2016-10-24 3 views
0

何か理由がありましたが、ログインページでログインしようとする度にnot a valid sha512_crypt hashというエラーが表示されます。登録ページの有効なsha512_cryptハッシュPython Flaskエラー

ワンピース:私のログインページの

   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) 

ワンピース:

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 

私は私のDBからのユーザー名とパスワードを入力するときだから私はエラーを取得する: not a valid sha512_crypt hash で私のDBに暗号化されたパスワードがあるので、私のsha256の暗号化は理論的に動作します。

+0

「データ」はどのように見えますか?あなたはパスワード 'password'を使ってアカウントを作成し、ハッシュを投稿できますか? – Blender

+0

どういう意味ですか? 'data'はSQLクエリとそれだけです' fetchone() ' – Julian

+0

' data'には有効なハッシュが含まれていることをどのように知っていますか? – Blender

答えて

1

sha256_cryptsha512_cryptの両方で作成されたデータベースにパスワードハッシュがありますが、両方を確認するにはsha512_cryptを使用しています。それは動作しません。

sha256_cryptで作成されたハッシュを持つユーザーのパスワードを再作成するか(どちらも$5$で始まる)、passlib.apps.custom_app_contextを使用して両方を検証します。次の例は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

今私は2エラーが発生します。 'ハッシュを特定できませんでした。 ' – Julian

+0

:' 'ImmutableMultiDict'オブジェクトは呼び出し可能ではありません。 '' ' – Julian

+0

@Julian:コンテキストなしでは、これらのエラーは無意味です。問題のあるコードを多少自己完結型にしてください。https://stackoverflow.com/help/mcve – Blender

関連する問題