使用node.js存在问题的加密技术

时间:2011-03-17 11:14:47

标签: cryptography node.js

新手问题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

2 个答案:

答案 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'