Q
QuickFnd

QuickFnd Blog

Priya Mehta
Priya Mehta· Personal Finance Writer
March 27, 2026·5 min read·How-To Guide

A Comprehensive Guide on How to Hash a Password in JavaScript Node.js

Learn how to hash a password in JavaScript Node.js effectively and securely. Protect your applications with this step-by-step guide.

Understanding Password Hashing

Hashing passwords is a crucial step in securing user data. It transforms a plaintext password into a fixed-size string of characters, which appears random. This process ensures that even if someone gains access to your database, they cannot easily retrieve the original passwords. Let's explore how to hash a password using Node.js, a popular JavaScript runtime environment.

Why Use Hashing?

Here's what most people miss: hashing is not just about security; it's about protecting your users' privacy. A good hashing algorithm makes it nearly impossible to reverse-engineer the original password from its hashed version. For instance, if a database is compromised, hashed passwords are significantly safer compared to storing them in plaintext.

The bcrypt Library

One of the most popular libraries for hashing in Node.js is bcrypt. It provides a robust and secure way to hash passwords, making it ideal for modern applications. The bcrypt algorithm includes a salt, which adds randomness to the hashing process, helping to protect against rainbow table attacks.

Prerequisites

Before we dive into the coding part, ensure you have the following:


  • A basic understanding of JavaScript and Node.js.

Step-by-Step: Hashing a Password in JavaScript Node.js

Let’s walk through the process of hashing a password using bcrypt in Node.js. Follow these steps:

  • Set up your project:
- Create a new directory for your project and navigate to it in your command line. - Run npm init -y to create a package.json file.
  • Install bcrypt:
- Execute the command npm install bcrypt in your terminal. This will add bcrypt to your project’s dependencies.
  • Create a new JavaScript file:
- Create a file named hashPassword.js in your project directory.
  • Write the hashing code:
- Open hashPassword.js and add the following code: ``javascript const bcrypt = require('bcrypt'); const password = 'yourPlaintextPassword'; // Replace with the password you want to hash const saltRounds = 10; // Cost factor for hashing bcrypt.hash(password, saltRounds, function(err, hash) { if (err) throw err; console.log(Hashed Password: ${hash}); }); `
  • Run your code:
- In your terminal, run
node hashPassword.js. You should see the hashed password output to the console.

Example Output

When you run the above code with a password like mySecurePassword123, you might see an output similar to:
`
Hashed Password: $2b$10$EIXN6X7b8Wg9e4kMXXWn0e6GvD3hnKQz0H4uO5b8tF.D7M3Y1O7K2
`
This hashed string is what you'd store in your database instead of the plaintext password.

Common Mistakes to Avoid

While hashing passwords is straightforward, there are common pitfalls to watch out for:

  • Using a weak hashing algorithm: Avoid algorithms like MD5 or SHA-1. They’re outdated and vulnerable. Instead, opt for bcrypt or Argon2.

  • Hardcoding passwords: In the example above, the password is hardcoded for simplicity. In a real application, always obtain passwords from user input securely.

  • Not salting passwords: Salting adds an extra layer of security. If you use bcrypt, the library automatically handles salting for you.

Salting Explained

Salting is the process of appending a unique random string (the salt) to a password before hashing. This means even if two users have the same password, their hashed values will differ due to unique salts. For example, if both users set their password as mySecurePassword123, the hashes will look different because of the unique salts used in each case.

Here’s a practical tip: always use a strong salt and a sufficient number of salt rounds (like 10 or more) to slow down potential attackers.

Validating a Hashed Password

Now that we’ve hashed a password, you’ll want to know how to verify it when a user logs in. Here’s how:

  • Store the hashed password: When a user registers, hash their password and store it in your database.
  • Compare user input with the stored hash:
- Use the
bcrypt.compare method: `javascript const bcrypt = require('bcrypt'); const userInputPassword = 'userInputPassword'; // Password entered by the user const storedHash = 'storedHashedPassword'; // The hash retrieved from your database bcrypt.compare(userInputPassword, storedHash, function(err, result) { if (err) throw err; if (result) { console.log('Password is valid!'); } else { console.log('Invalid password.'); } }); `

Real-World Example

Let’s say you’re building a user authentication system for a financial application. You decide to use bcrypt to hash user passwords for added security.

  • User A registers with the password Secure123. After hashing, the stored password in your database might look like:

`
$2b$10$Hgs4y1234abcd5678efghIjklmnopqrstuVwxYz
`
  • User B registers with Secure123 as well, but due to salting, their hashed password is different:

`
$2b$10$Xyz9876abcd5678efghIjklmnopqrstuVwxYz
``

When User A logs in, you hash their input and compare it to the stored hash. If it matches, they gain access. If not, they’re denied. This process keeps your application secure!

Conclusion

Hashing passwords is an essential step in ensuring the security of your applications. By using bcrypt, you can protect your users' data effectively. Remember to avoid common mistakes like using weak algorithms or hardcoding sensitive information.

If you're curious about the security of your own passwords, why not check out our Password Strength Checker to ensure they're strong enough? For more tools and resources, explore QuickFnd.com for all your hashing needs. Happy coding!

#javascript#nodejs#password-hashing#security#bcrypt
Priya Mehta
Priya MehtaPersonal Finance Writer· Mumbai, India

Priya spent 7 years in financial planning before switching to full-time writing. She explains India's complex tax and investment landscape in terms anyone can understand.

income taxmutual fundssiphragst

Free Tool

Try the Sha256 Generator for free

Open Tool →

Found this helpful? Give it a like to let the author know.

Discussion

Leave a comment

Loading comments...

Related Articles