仅使用密码对用户进行身份验证

时间:2019-06-23 01:11:24

标签: javascript postgresql express npm cryptography

我需要为我要构建的快速应用程序创建身份验证系统。客户要求使用仅使用4位数密码的密码系统。我具有代码设置,可以在创建新用户时使用其他用户信息保存并散列图钉,并且该项目只是一台内部服务器,因此它不需要处理大量用户。

我的问题是重新登录用户。我正在使用bycrypt来哈希密码,但是bycrypt会为相同的字符串生成一个全新的哈希。

我遇到的麻烦是通过进行WHERE hash=hash SQL搜索来获取用户。但这是行不通的,因为即使密码相同,每次哈希也不同。

我可以获得所有用户并对其进行遍历,并使用bycrypt的.compare方法。但是,从长远来看,随着用户数量的增长,这将行不通,而bycrypt的构建需要花费很长时间来处理cpu,以帮助防止暴力攻击。

我还可以构建自己的哈希函数。但是,这样做确实是必要的,因此我必须与每个用户一起存储盐才能使每个密码唯一。然后,出现相同的问题,即相同的字符串没有相同的哈希。

我知道这很模糊,但是我需要一些帮助,想出一种通过使用哈希密码来获取用户的方法。

1 个答案:

答案 0 :(得分:2)

只需将PIN存储为纯文本即可。在4位PIN上使用散列功能无济于事,但会带来错误的安全感。如果只有10,000个可能的输入,那么即使是故意慢速的哈希函数也很容易被蛮力破解。

  

我遇到的麻烦是通过进行WHERE hash=hash SQL搜索来获取用户

您是不是在说您甚至不知道该人声称自己是谁,而是在使用4位数的图钉作为声明和证明?听起来好像您在构建一个只有安全感的系统。