我实际上是在使用 bcrypt
模块来散列和比较散列密码。
我想做的是删除 bcrypt
模块并使用默认的 crypto
库来哈希和比较密码。
这可能吗?
这会比使用 node-bcrypt
安全吗?
你有关于如何做的任何示例/教程/文档/链接吗?
或者我实际上这样做的例子:
bcrypt.hash(string,secret_key)
bcrypt.compare(string,string,secret_key);
如果可能的话,我只想用加密复制它:
crypto.hash(string,secret_key)
crypto.compare(string,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 和迭代中派生出给定长度的 key 。 pbkdf2 具有与 bcrypt 类似的慢速特性。使用 PBKDF2、bcrypt 或 scrypt,攻击者每秒只能进行几千次猜测(或更少,具体取决于配置)。
关于javascript - 使用加密的 Node.js 密码哈希 bcrypt 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22819861/