在登录路径上,我检索了密码。我如何在数据库中找到具有匹配的哈希密码的用户而不获取整个用户表并在服务器上遍历它?
在mysql中,每个用户都可以通过注册获得哈希密码。我是这样生成的:bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt()).decode('utf-8')
如果我在登录时执行相同的方法(对于相同的纯文本密码),则会得到不同的哈希值。
所以像这样:
select * from User where hash_generated_at_register = hash_generated_at_login
即使登录和注册步骤中使用的纯文本密码相同,也会失败。
据我了解,bcrypt中的密码检查是通过完成bcrypt.checkpw(password, hash)
而不是再次进行哈希来完成的。使用这种方法,我唯一想到的选择是选择整个User表并在服务器端进行遍历。但是我想在数据库端遍历!如何使用bcrypt哈希方法完成此操作?
慕丝7291255
相关分类