使用bcrypt对数据加密

使用bcrypt对数据加密

​ 这是一篇随笔,用于记录在项目中用到一个比较的你npm包。这个包之所以这个货因为他的安全系数比以前用到的类似于md5,sha1要高,因为bcrypt加密,同样一个值,你每次加密出来的值是不一样的。原来的md5加密就做不到这一点。好了废话不多说,如果对bcrypt的算法感兴趣的话,大佬们可以去研究一下。下面我们来讲讲他的使用方法,其实npm仓库也有,但是本人英文水平有限哈。当然英语好的还是去查官方文档。

使用:

一、加密操作:

bcrypt提供了基本的两种方式,hash 和hashSync 两个方法,前者是异步api,后者同步。


// 方式一
const bcrypt = require('bcrypt')
bcrypt.hash('777777', 10, (err, encrypted) => {
    if (err) {
        console.log(err.message)
        return
    }
    console.log(encrypted)
})



// 方式二(Promise风格)

bcrypt
    .hash('777777', 10)
    .then(result => {
        console.log(result)
    })
    .catch(err => {
        console.log(err.message)
    })


// 方式三  hashSync

const hash = bcrypt.hashSync('777777', 10) // hash=>true
//*注意*: hashSync 是一个同步的api,里面只需要传递两个参数,第一个参数为data[String],第二个参数为salt[Number]

异步的方式获取散列的值,第一个参数为加密的数据(data)必须为String类型的值,第二个参数为salt 加密程度,类型必须是Number 。 这里salt的值可以 理解为加密的程度,salt值越大,越消耗时间,加密的程度也会越高

可以传递第三个参数,回调函数(err/encrypted) 第一个参数为错误,第二个参数为加密散列后的值

二、解密操作

bcrypt提供了基本的两种方式,compare 和compareSync 两个方法,前者是异步api,后者同步。


const bcrypt = require('bcrypt')
const hash = bcrypt.hashSync('777777', 10)
// 方式一、异步的比较
bcrypt.compare('777777', hash, (err, flag) => {
    if (err) {
        console.log(err.message)
        return
    }
    console.log(flag) //flag=>true
})


// 方式二、异步比较(Promise)风格
bcrypt
    .compare('777777', hash)
    .then(res => {
        console.log(res)// res=>true
    })
    .catch(err => {
        console.log(err.message)
    })



//方式三,同步比较
const flag = bcrypt.compareSync('777777', hash)// flag=>true
原文地址:https://www.cnblogs.com/comyan/p/14074907.html