使用bcrypt对数据加密

摘要:
{if(err){console.log(err.message)return}控制台。log(加密)})//方法2(Promise样式)bcrypt。哈希('777777',{console.log(result)})。捕获(err=>
使用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

免责声明:文章转载自《使用bcrypt对数据加密》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇connect() to 192.168.30.71:8082 failed (99: Cannot assign requested address) while connecting to upstream, client: 114.80.182.136, server: localhost, request: "GET /home/senior HTTP/1.1", upstream: "spring-boot-starter-data-redis与spring-boot-starter-redis两个包的区别下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

c#WinForm中TeeChart控件的注册和使用

首先要注册好TeeChart控件,注册方法参考:https://blog.csdn.net/my_clear_mind/article/details/79741020 完成注册之后,新建一个WinForm项目,在工具箱中点右键->新建选项卡(TeeChart),然后在这个选项卡上点右键->选择项->COM组件,找到TeeChart Pr...

【Jenkins系列教程】流水线通过SSH方式操作Git仓库

主旨 实践 Jenkins 流水线使用SSH方式操作 Git 仓库,包含基于 SSH 私钥认证的服务器 准备 需要提前安装 SSH Agent Plugin,可以通过 Manage Jenkins-> Manage Plugins-> Installed 使用 filter 搜索查看是否安装,如没有则通过 Available处搜索安装 使用 本...

【WPF】DataGrid动态绑定隐藏列 DataGridTextColumn.Visibility

方法一: 前端 <FrameworkElement x:Name="dummyElement" Visibility="Collapsed"/> <DataGrid> <DataGrid.Columns> <DataGridTextColumn Header="Te...

Spring Security中实现微信网页授权

微信公众号提供了微信支付、微信优惠券、微信H5红包、微信红包封面等等促销工具来帮助我们的应用拉新保活。但是这些福利要想正确地发放到用户的手里就必须拿到用户特定的(微信应用)微信标识openid甚至是用户的微信用户信息。如果用户在微信客户端中访问我们第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。今天就结合Spring Se...

To Use EGit(Git for Eclipse)

  Label Decorations Menu Actions  User Guidehttp://wiki.eclipse.org/EGit/User_Guide Label Decorations Label decorations show Git specific information on resources under Git versi...

URL中#号(井号)的作用

今天又看到了一篇非常好的来自HTTPWatch的文章,不得不推荐给大家。 1. 井号在URL中指定的是页面中的一个位置 井号作为页面定位符出现在URL中,比如:http://www.httpwatch.com/features.htm#print ,此URL表示在页面features.htm中print的位置。浏览器读取这个URL后,会自动将print位置...