新手问题re:nodejs和cryto
var crypto = require('crypto');
var User = {
user1: { name: 'bob', salt: 'randomSalt', password: sha1('mypass', this.salt) }
};
function sha1(pass, salt) {
return crypto.createHmac('sha1', salt).update(pass).digest('hex');
}
为什么我有
console.log(User.user1.password == sha1('mypass', 'randomSalt') //false
?
答案 0 :(得分:4)
回答自己:
“经典”javascript gotcha:
从对象调用sha1时,上下文(this)已更改。因此,this.salt是“未定义的”
答案 1 :(得分:0)
这应该有效:
var crypto = require("crypto");
function sha1(pass, salt) {
return crypto.createHmac('sha1', salt).update(pass).digest('hex');
}
var User = { name:'Robin', salt:'mysalt'}
User.password = sha1('mypass', User.salt);
// 'cfbc41a870bb7ddd3d7fcc774dd6d2d5850d5340'