Hashing passwords with Bcrypt and node.js

Hashing passwords with Bcrypt and node.js

In my last tutorial, I had explained how to register users and authenticate a user with their password without using any encryption layer but that was not good practice to store password in the table.

In this tutorial, I will tell you how to use basic encryption layer to store password using bcrypt module in Node.js

This is the proper way to save password in the database using bcrypt module.

There are 2 ways to hash the password - sync and async by using the bcrypt module.

Make sure you are using a stable version of node because the module does not support unstable versions.

To use the bcrypt module in Node.js, install it via NPM.

$ npm install bcrypt --save

Once you have installed the bcrypt module, include it in your node application.

// require the bcrypt module
var bcrypt = require('bcrypt');
Synchronous Usase

First generate the salt and then hash the password with the salt.

var salt = bcrypt.genSaltSync(10);
var hash = bcrypt.hashSync(req.body.password, salt);
-- OR --
var hash = bcrypt.hashSync(req.body.password, 10);

To authenticate the incoming password string with the hash stored in the database :

bcrypt.compareSync(req.body.password, hash); 

If requested password match with the hash password then compareSync will return true.

Asynchronous Usase

You can go with Asynchronous method in following way :

bcrypt.hash(req.body.password, 10, function(err, hash) {
    // Store hash password in your Database.
});

To compare the requested password with database password, you can use following line of code :

bcrypt.compare(req.body.password, hash, function(err, res) {
    // res == true
});

A complete example to authenticate password from hash password :

  1. module.exports.authenticate=function(req,res){
  2.     var email=req.body.email;
  3.     var password=req.body.password;
  4.     connection.query('SELECT * FROM users WHERE email = ?',[email], function (error, results, fields) {
  5.      if (error) {
  6.          res.json({
  7.             status:false,
  8.             message:'there are some error with query'
  9.             })
  10.      }else{
  11.      if(results.length >0){
  12.          bcrypt.compare(password, results[0].password, function(err, ress) {
  13.             if(!ress){
  14.                 res.json({
  15.                      status:false,        
  16.              message:"Email and password does not match"
  17.              });
  18.             }else{                 
  19.                     res.json({
  20.                         status:true,
  21.                         message:"Successfully Login"
  22.                     })
  23.             }
  24.             });    
  25.      }
  26.      else{
  27.      res.json({
  28.          status:false,
  29.      message:"Email does not exits"
  30. });
  31.      }
  32.      }
  33.     });
  34. }

Phone: (+91) 8800417876
Noida, 201301
sakarya escort akyazı escort arifiye escort erenler escort eve gelen escort ferizli escort geyve escort hendek escort otele gelen escort sapanca escort söğütlü escort taraklı escort
escort bayan escort bayan escort bayan escort bayan escort bayan escort bayan escort bayan sakarya escort sakarya escort sakarya escort sakarya escort sakarya escort sakarya escort sakarya escort adapazarı escort adapazarı escort adapazarı escort adapazarı escort adapazarı escort adapazarı escort adapazarı escort serdivan escort serdivan escort serdivan escort serdivan escort serdivan escort serdivan escort serdivan escort sakarya escort bayan sakarya escort bayan sakarya escort bayan sakarya escort bayan sakarya escort bayan sakarya escort bayan sakarya escort bayan escort sakarya escort sakarya escort sakarya escort sakarya escort sakarya escort sakarya escort sakarya serdivan escort sapanca escort karasu escort hendek escort izmir escort