嘿,由于某些原因,每当我尝试登录登录页面时,我都会收到此错误not a valid sha512_crypt hash
。
注册页面:
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
所以当我从我的数据库填写用户名和密码时,我收到一个错误:
not a valid sha512_crypt hash
在我的数据库中有加密密码,所以我的sha256加密在理论上有效。
答案 0 :(得分:1)
您在使用sha256_crypt
和sha512_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)