node.js - 由于盐未知,Node bcrypt 哈希/比较如何工作

标签 node.js bcrypt

我正在查看 bcrypt 文档中的代码示例:

bcrypt.hash(myPlaintextPassword, saltRounds, function(err, hash) {
  // Store hash in your password DB.
});

我不明白的是,如果我不知道盐,如何比较密码?

bcrypt.compare(myPlaintextPassword, hash, function(err, res) {
    // res == true
});

经过一番阅读,我了解到哈希已经包含盐和成本。但如果是这样的话,一旦黑客获得这个哈希值,他就可以使用彩虹表或其他东西来暴力破解密码?

将哈希值和盐分开存储是更好的做法吗?

这是处理密码的安全方法吗?

最佳答案

您误解了盐提供的安全性。没有期望或意图对攻击者保密盐——如果攻击者获得散列密码,他们也将获得盐。但它仍然阻止他们使用彩虹表或其他预先计算的攻击,因为他们不会拥有使用特定盐生成的彩虹表。当然,他们可以进行暴力攻击,但 bcrypt 还有其他功能可以让这变得困难。

关于node.js - 由于盐未知,Node bcrypt 哈希/比较如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46445583/

相关文章:

javascript - GetStream.io - 删除 feed Nodejs

javascript - 如何在 Node js 的服务器端验证谷歌身份验证 token ?

javascript - 将 BCrypt 哈希传递给另一个函数

python - 'bytes' 对象没有属性 'encode'

javascript - 实时更新 Node.js 服务器

javascript - Node.js、express、jade、highcharts 和二维数组

node.js - NowJS 当前 session

python - 当我尝试安装 Flask-bcrypt 时它抛出错误 : command 'x86_64-linux-gnu-gcc' failed with exit status 1

java - 具有 Spring 安全性的自定义密码盐

php - 在 PHP 5.5 中生成密码哈希并设置成本选项