方式一:使用bcryptjs

npm文档:https://www.npmjs.com/package/bcryptjs

使用方法很简单
首先安装该依赖

npm install bcryptjs

引入项目中,可以在登录注册路由所在的地方进行引入

var bcrypt = require('bcryptjs');

接下来就可以在项目中对想要加密的数据进行加密了

bcrypt.genSalt(10, function(err, salt) {
    bcrypt.hash(要加密的字段, salt, function(err, hash) {
        // Store hash in your password DB.
        // hash 就是加密后的结果
    });
});

对加密的数据进行检查也很简单
使用的是bcrypt的compare方法,当使用回调函数的模式的时候传入三个参数,第一个就是被加密的字段,在注册登录场景中就是用户输入的不经过加密的字段,第二个就是加密后得到的hash值,也就是存到数据库中的字段,通过这两个参数的比较可以判断登录场景下输入的密码和数据库里面的密码是否相同,参数三是一个回调函数,node是错误优先的回调函数,第一个参数是错误的结果,第二个参数是判断的结果,如果正确,res返回的就是true

// Load hash from your password DB.
bcrypt.compare(要加密的字段, hash, function(err, res) {
    // res === true
}); 
// As of bcryptjs 2.4.0, compare returns a promise if callback is omitted:
bcrypt.compare(要加密的字段, hash).then((res) => {
    // res === true
});