bcrypt node.js (自动生成盐和散列)
bcrypt node.js (auto-gen a salt and hash)
在将用户密码存储在我的数据库中之前,我正在使用以下代码对用户密码进行哈希处理(希望是加盐处理)。
// hash the password before the user is saved
ConsultantSchema.pre('save', function(next) {
var user = this;
// hash the password only if the password has been changed or user is new
if (!user.isModified('password')) return next();
// generate the hash
bcrypt.hash(user.password, null, null, function(err, hash) {
if (err) {
logger.error("bcrypt.hash "+err);
return next(err);
}
// change the password to the hashed version
user.password = hash;
next();
});
});
我比较困惑的是
bcrypt.hash(user.password, null, null, function(err, hash) {
我从教程中获得了这段代码,我经常看到它在寻找答案。
根据 bcrypt 的文档 (https://www.npmjs.com/package/bcrypt),我预计会出现以下代码
const saltrounds = 10;
bcrypt.hash(user.password, saltRounds, function(err, hash) {
可以正常工作,但这会无误地中断我的程序。
我的问题是:
为什么有两个 "null" 参数?他们有什么用?
散列是否基于带有两个空值的代码加盐?
预先感谢您的帮助!
以下语法来自(已废弃?)bcrypt-nodejs 模块1
bcrypt.hash(user.password, null, null, function(err, hash) {
您参考了 bcrypt 模块的文档 2。
确保您使用的是正确的模块。
我使用加密库进行哈希处理,效果很好。这是我的代码片段
var salt = crypto.randomBytes(128).toString('base64');
var iterations = 10;
var keylen = 20;
crypto.pbkdf2(args.password, salt, iterations, keylen, function(succes, bcryptedPassword) {
console.log(bcryptedPassword.toString());
//Do actions here
});
请看是否对您有帮助
有区别bcrypt and bcrypt-nodejs。以下代码来自他们位于 npmjs.com.
的文档
bcrypt 哈希
bcrypt.hash(myPlaintextPassword, salt, function(err, hash)
或
bcrypt.hash(myPlaintextPassword, saltRounds, function(err, hash)
bcrypt-nodejs 哈希
bcrypt.hash(myPlaintextPassword, null, null, function(err, hash)
说明
您正在查看 bcrypt 的文档,而不是 bcrypt-nodejs。如果您使用 node.js,您很可能想要使用 bcrypt-nodejs。我有多个项目利用它的功能。这两个 null
字段用于 salt 和 progress:
- salt - [必需] - 用于散列密码的盐。
- progress - 在哈希计算期间调用以表示进度的回调
在将用户密码存储在我的数据库中之前,我正在使用以下代码对用户密码进行哈希处理(希望是加盐处理)。
// hash the password before the user is saved
ConsultantSchema.pre('save', function(next) {
var user = this;
// hash the password only if the password has been changed or user is new
if (!user.isModified('password')) return next();
// generate the hash
bcrypt.hash(user.password, null, null, function(err, hash) {
if (err) {
logger.error("bcrypt.hash "+err);
return next(err);
}
// change the password to the hashed version
user.password = hash;
next();
});
});
我比较困惑的是
bcrypt.hash(user.password, null, null, function(err, hash) {
我从教程中获得了这段代码,我经常看到它在寻找答案。 根据 bcrypt 的文档 (https://www.npmjs.com/package/bcrypt),我预计会出现以下代码
const saltrounds = 10;
bcrypt.hash(user.password, saltRounds, function(err, hash) {
可以正常工作,但这会无误地中断我的程序。
我的问题是: 为什么有两个 "null" 参数?他们有什么用? 散列是否基于带有两个空值的代码加盐?
预先感谢您的帮助!
以下语法来自(已废弃?)bcrypt-nodejs 模块1
bcrypt.hash(user.password, null, null, function(err, hash) {
您参考了 bcrypt 模块的文档 2。
确保您使用的是正确的模块。
我使用加密库进行哈希处理,效果很好。这是我的代码片段
var salt = crypto.randomBytes(128).toString('base64');
var iterations = 10;
var keylen = 20;
crypto.pbkdf2(args.password, salt, iterations, keylen, function(succes, bcryptedPassword) {
console.log(bcryptedPassword.toString());
//Do actions here
});
请看是否对您有帮助
有区别bcrypt and bcrypt-nodejs。以下代码来自他们位于 npmjs.com.
的文档bcrypt 哈希
bcrypt.hash(myPlaintextPassword, salt, function(err, hash)
或
bcrypt.hash(myPlaintextPassword, saltRounds, function(err, hash)
bcrypt-nodejs 哈希
bcrypt.hash(myPlaintextPassword, null, null, function(err, hash)
说明
您正在查看 bcrypt 的文档,而不是 bcrypt-nodejs。如果您使用 node.js,您很可能想要使用 bcrypt-nodejs。我有多个项目利用它的功能。这两个 null
字段用于 salt 和 progress:
- salt - [必需] - 用于散列密码的盐。
- progress - 在哈希计算期间调用以表示进度的回调