0

我正在尝试比较从 nodeJs 加密模块的 PBKDF2sync 函数创建的密码哈希与使用“===”在我的数据库中的一个存储。但我越来越假了。我已经使用 console.log 检查了两者的盐是相等的,但仍然显示为假。我不明白发生了什么?

当我尝试 console.log 来自 PBKSF2sync 函数的哈希时,我在终端上得到了这个东西

<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 ...>

这就是我变得虚假的原因吗?请帮我。

4

2 回答 2

1

问题是我将密码作为字符串存储在数据库中,而PBKDF2sync函数返回给我一个缓冲区。所以===没有工作。多亏了一些读数,我才弄清楚了,在返回 PBKDF2 后,我刚刚使用.toString()它并且它有效。

希望这可以解决其他人可能在同一主题上遇到的任何问题。

于 2013-07-04T06:13:42.913 回答
1

=== 还确保两种数据类型精确匹配,所以如果说一个是缓冲区,另一个是(类型化的)数组,那么它们可能具有相似的内容,但仍然无法比较。

您可以使用 == 进行比较,这将尝试将两者都转换为匹配的类型,但不安全,因此不建议在哈希操作中使用,或者您只需在比较它们之前将两者转换为相同的类型。

于 2013-07-03T22:31:17.277 回答