1

nodejs ライブラリ scrypt を使用してパスワードをハッシュしています。

scrypt.hash(new Buffer(data.password), scryptParameters, function(err, res) {
  console.log(res);
  //scrypt.verify(res, "incorrect password");
});

これは完全に機能します。しかし、問題は、ハッシュを検証するために行のコメントを外すときです(簡単にするために、同じ関数に(そして同期的に)入れました)

スクリプトはエラーなしでクラッシュします。これは私がコンソールで得たものです

/Users/foo/Documents/nodejs/wow/models/user.js:44
    scrypt.verify(res, "incorrect password");
           ^
[object Object]
31 Jul 10:26:52 - [nodemon] app crashed - waiting for file changes before starting...

また、ある種のオブジェクト、つまり を配置しようとしているようです[object Object]。その行のコメントを外す前にコンソールに何も表示されないため、console.log ではありません。

誰も同じ問題を抱えていましたか?前もって感謝します。

4

1 に答える 1

1

問題は、 に間違ったキー エンコーディングを使用していることですscrypt.verify()。デフォルトでは、バッファが必要ですが、文字列を指定しています。"incorrect password"を Buffer に変更するか、次のようにします。

scrypt.hash(new Buffer(data.password), scryptParameters, function(err, res) {
  scrypt.verify.config.keyEncoding = "utf8";
  scrypt.verify(res, "incorrect password");
});
于 2014-07-31T02:40:28.680 に答える