📜  bcrypt nodejs 哈希密码 - Javascript (1)

📅  最后修改于: 2023-12-03 14:59:30.616000             🧑  作者: Mango

使用 Bcrypt 和 Node.js 哈希密码

在 Node.js 应用中,存储用户密码时,明文存储是存在很大安全隐患的。为此,我们需要在服务器端对密码进行加密处理,在存储到数据库中。本文将会介绍如何使用 Bcrypt 和 Node.js 来实现密码的哈希加密。

什么是 Bcrypt?

Bcrypt 是一个基于 Blowfish 加密算法,用于密码哈希加密的库。它可以生成一个哈希字符串,其中包含加密的密码和一个称为“盐”的随机字符串。由于盐的存在,即使两个用户使用相同的密码,最终得到的哈希值也是不同的,极大的增加了密码破解的难度。

安装 Bcrypt

在使用 Bcrypt 之前,我们需要通过 npm 安装 Bcrypt 库:

npm install bcrypt
使用 Bcrypt 哈希密码

使用 Bcrypt 哈希一个密码非常容易,我们只需要调用 hash 方法,并传入密码和盐即可。下面是一个简单的示例:

const bcrypt = require('bcrypt');
const saltRounds = 10;
const myPlaintextPassword = 'password123';
 
bcrypt.hash(myPlaintextPassword, saltRounds, function(err, hash) {
    // Store hash in your password DB.
});

在上面的示例中,我们将密码 password123 和盐 saltRounds 通过 Bcrypt 进行哈希加密。得到的加密字符串 hash 可以存储在数据库中,在验证用户密码时,我们可以将用户输入的密码和数据库中存储的哈希值进行比较,并确定用户密码是否正确。

验证密码

验证密码也比较简单,我们只需要将客户端输入的密码和数据库中存储的哈希值进行比较。Bcrypt 提供了一个验证哈希密码的工具函数 compare,下面是一个示例:

const bcrypt = require('bcrypt');
const myPlaintextPassword = 'password123';
const hash = '$2b$10$zJ/yzXEWXgEHdZrfYLOZtOv25pPW5N5fLgmnMfsobrylJH9G0OmZ.';
 
bcrypt.compare(myPlaintextPassword, hash, function(err, res) {
    if (res) {
        // Password is correct
    } else {
        // Password is incorrect
    }
});

在上面的示例中,我们比较了密码 password123 和哈希值 hash 是否匹配,如果匹配,就说明密码正确,否则就说明密码不正确。

结语

Bcrypt 是一个安全可靠的密码哈希加密算法,在 Node.js 开发中使用 Bcrypt 可以极大地提高密码的安全性。本文介绍了如何在 Node.js 应用中使用 Bcrypt 进行密码哈希加密和验证,希望对您有所帮助。