bcrypt - Node.js

Bcrypt とは?

「 blowfish 」という暗号アルゴリズムを用いたパスワードハッシュ関数です。

インストール

npm install bcrypt

同期処理の方法

const bcrypt = require('bcrypt');

const saltRounds = 10;
const passwrod = "password";

let salt = bcrypt.genSaltSync(saltRounds); // ソルトの生成

console.log(salt);

let hash = bcrypt.hashSync(passwrod, salt); // ハッシュの生成

console.log(hash);

console.log(bcrypt.compareSync("password", hash)); // true ハッシュの照合

パスワードの検証

const bcrypt = require('bcrypt');

const saltRounds = 10;
const passwrod = "password";

let salt = bcrypt.genSaltSync(saltRounds);
let hash = bcrypt.hashSync(passwrod, salt);

console.log(bcrypt.compareSync("password", hash));

非同期処理の方法

ハッシュとソルトの生成

const bcrypt = require('bcrypt');
const saltRounds = 10;
const password = 'password';

console.log('start');
console.time('A');

bcrypt.hash(password, saltRounds)
  .then(hash => {
    console.log(hash);
    console.timeEnd('A');
  })
  .catch(error => {
    console.log(error);
});

console.log('end');

パスワードの検証

const bcrypt = require('bcrypt');
const hash = '$2b$10$DtZ8RoPTSXZcH8J8pYprwORQ2ZGsNbW1bbD8oYafHpMf7leiDKnri';
const password = 'password';

console.log('start');
console.time('A');

bcrypt.compare(password, hash)
  .then(res => {
      console.log(res);
      console.timeEnd('A');
  })
  .catch(error => {
      console.log(error);
});

console.log('end');