我试图将nodeJs加密模块的PBKDF2sync函数创建的密码哈希与使用“===”的数据库中的一个商店进行比较。但我变得虚假。我已经使用console.log检查过两者的盐是否相等但仍显示为false。我不明白发生了什么事?
当我尝试从PBKSF2sync函数调试hash.log哈希时,我在终端上得到了这个东西
<SlowBuffer bf 36 32 7e b8 8e 6d a7 8f 8a 9d cb 7e 99 11 47 a7 17 80 17 df ef 8b b4 36 f1 18 1d c5 de ab 1e b3 69 f1 2f 1a 20 09 1f e6 2c c6 2e e9 ca 1f 5a 58 19 46 ...>
这就是我弄错的原因。请帮帮我。
答案 0 :(得分:1)
===还确保两种数据类型都精确匹配,所以如果说一个是缓冲区而另一个是(类型化)数组,那么它们可能具有相似的内容,但仍然无法比较。
您可以使用==来比较哪个会尝试将两者转换为匹配类型,但是不安全,因此在哈希操作中不建议您或者只是在比较它们之前将它们转换为相同的类型。
答案 1 :(得分:1)
问题在于我将密码存储在数据库中作为字符串,而PBKDF2sync
函数正在返回缓冲区。所以===
没有用。感谢一些阅读,我做了我想出来的,在返回PBKDF2之后,我刚刚使用了.toString()
就可以了。
希望这可以解决任何其他人可能在同一主题上遇到的任何问题。