python - ValueError:不是有效的 sha256_crypt 哈希
问题描述
我正在处理这个应用程序,我已经设置了一个注册和登录页面。一切正常,唯一的问题是密码验证。我正在使用 SHA256,每次尝试记录时都会出现此错误:ValueError: not a valid sha256_crypt hash
这是一段 def 寄存器
def register():
if request.method=="POST":
name = request.form.get("name")
username = request.form.get("username")
password = request.form.get("password")
confirm = request.form.get("confirm")
secure_password = sha256_crypt.encrypt(str(password))
def login():
if request.method == "POST":
username = request.form.get("username")
password = request.form.get("password")
usernamedata = db.execute("SELECT username FROM users WHERE username=:username", {"username":username}).fetchone()
passwordata = db.execute("SELECT password FROM users WHERE username=:username", {"username":username}).fetchone()
if usernamedata is None:
flash("No username", "danger")
return render_template("/login.html")
else:
for passwor_data in passwordata:
if sha256_crypt.verify(password,passwor_data):
flash("You are now logged in","success")
return redirect("/index.html")
解决方案
您正在遍历哈希中的每个字符for passwor_data in passwordata:
,因此它会引发此错误,并抱怨第二个参数不是有效的 sha256 哈希。
它应该是这样的:
if sha256_crypt.verify(password, passwordata):
flash("You are now logged in","success")
return redirect("/index.html")
- 密码是从用户输入接收的明文密码
- passwordata 是 sha256 哈希
简短的例子:
from passlib.hash import sha256_crypt
password = "test"
passwordata = sha256_crypt.encrypt(password)
if sha256_crypt.verify(password, passwordata):
print("OK")
推荐阅读
- android - 如何在 Kotlin 中扩展 ConstraintLayout
- javascript - 如何避免“丢失”一个 DOM 元素,同时使用仅限于容器 DIV 的 javascript 拖动它
- ruby-on-rails-5 - 有没有办法防止这个查询在 Rails 中受到 SQL 注入攻击?
- flutter - 用来自restapi的响应来构建listview
- javascript - 如何修复对过滤后的 JSON 数组进行切片的函数?
- python - Python - 嵌套循环
- typescript - 在那种情况下 TypeScript 联合类型如何
- android - 如何在 android 日历视图中设置日期范围?
- r - 在 Shiny 中隐藏/显示菜单项
- directx - DirectX12:创建 IDXGIFactory 时 dxgi dll 发生灾难性故障