javascript – 使用crypto的Node.js密码哈希bcrypt替代方案

前端之家收集整理的这篇文章主要介绍了javascript – 使用crypto的Node.js密码哈希bcrypt替代方案前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我实际上使用bcrypt模块来散列和比较散列密码.

我想要做的是删除bcrypt模块并使用默认加密库进行散列和比较密码.

这可能吗?

这会比使用node-bcrypt安全吗?

你有关于怎么做的任何示例/教程/ doc /链接

或者我实际上是这样做的:

bcrypt.hash(string,secret_key)
bcrypt.compare(string,string,secret_key);

如果可能的话,我只想用加密复制它:

crypto.hash(string,secret_key)
    crypto.compare(string,secret_key);

解决方法

您可以使用加密库中的pbkdf2进行哈希:
crypto.pbkdf2(password,salt,iterations,keylen,digest,callback)

示例实施:

const crypto = require('crypto');
crypto.pbkdf2('secret','salt',100000,512,'sha512',(err,derivedKey) => {
  if (err) throw err;
  console.log(derivedKey.toString('hex'));  // '3745e48...aa39b34'
});

这里是参考:https://nodejs.org/api/crypto.html#crypto_crypto_pbkdf2_password_salt_iterations_keylen_digest_callback

它使用HMAC摘要算法(如sha512)从给定的密码,salt和迭代中导出给定长度的密钥. Pbkdf2具有类似bcrypt的慢速特征.使用PBKDF2,bcrypt或scrypt,攻击者每秒只能进行几千次猜测(或更少,具体取决于配置).

猜你在找的JavaScript相关文章