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