passport.js难以获得散列密码

我在我的应用程序中使用Passport.js。

我正在使用这种盐:

7PJnpX5okg9ET2pZ2m5eyg== 

对于这个哈希密码是:

 ZKRdKDloN37k9Bt070YMZkrqZw+e5IsFx/mdir3+QAEk1dDSp8+q1YJ57GvAQKU5dWIit55eNgWEcI4hd1N7vw== 

现在,当用户login时,我使用这个代码:

 var userPass = 'testtest' var salt = "7PJnpX5okg9ET2pZ2m5eyg=="; var hashedPassword1 = crypto.pbkdf2Sync(userPass, salt, 10000, 64).toString('base64'); 

hashedPassword1是不同的:

 Gav+sH1tUG4xlBZOupBy+hcPMGbg5LexzONJuthJxnsY9/WvX17i2d9n6L292bXVsndHbcJfC2KeY3SL 

IRBjEw ==

问题是你的salt是一个Base-64编码的string,但你需要它的二进制值:

 var salt = new Buffer('7PJnpX5okg9ET2pZ2m5eyg==', 'base64'); 

当你使用它的时候, hashedPassword1将和你已经拥有的一样。