【发布时间】:2025-11-25 11:10:01
【问题描述】:
我需要为我正在构建的快速应用程序创建一个身份验证系统。客户要求拥有一个仅使用 4 位密码的密码系统。在创建新用户时,我设置了代码来保存和散列 pin 与其余用户信息,并且该项目只是一个内部服务器,因此它不需要处理大量用户。
我的问题是让用户重新登录。我正在使用 bycrypt 对密码进行哈希处理,但 bycrypt 会为相同的字符串生成一个全新的哈希值。
我遇到的问题是通过WHERE hash=hash SQL 搜索来获取用户。但这是行不通的,因为即使密码相同,哈希每次都不同。
我可以获取所有用户并遍历所有用户并使用 bycrypt 的 .compare 方法。但从长远来看,随着用户数量的增长,这不会奏效,而且 bycrypt 的构建需要在 CPU 上花费很长时间来帮助防止暴力攻击。
我还可以构建自己的散列函数。但是,这样就可以了,所以我必须为每个用户存储一个盐,以使每个密码都是唯一的。那么这就带来了相同的字符串没有相同的哈希值的问题。
我知道这很模糊,但我需要一些帮助来想办法通过使用散列密码获取用户来获取用户。
【问题讨论】:
标签: javascript postgresql express npm cryptography