
240
7 章 セキュリティ、暗号化、認証
server.js
app.post('/', function (req, res) {
if (req.body && req.body.user && req.body.pass) {
crypto.randomBytes(128, function (err, salt) {
if (err) { throw err; }
salt = new Buffer(salt).toString('hex');
crypto.pbkdf2(req.body.pass, salt, 7000, 256, function (err, hash) {
if (err) { throw err; }
userStore[req.body.user] = {
salt: salt,
hash: (new Buffer(hash).toString('hex'))
};
res.send('
登録ありがとうございます、
' + req.body.user + '
さん!
');
console.log(userStore);
});
});
}
});
pbkdf2
関数によるハッシュ化プロセスは、イテレーションの回数によって
1
秒前後の時間が
かかることがあります。
randomBytes
メソッドと
pbkdf2
メソッドは非同期で動作するため、
res.
send
を
randomBytes
メソッドのコールバック関数の外に出せば、ハッシュ化プロセスの間にユー
ザを待たせることなく次のページに遷移させることができます(ただし、エラーが発生した場合に ...