【Node.js】bcrypt

转载:
https://blog.csdn.net/yugongpeng/article/details/134446806
https://blog.csdn.net/weixin_45822938/article/details/123255566

基本使用

npm install bcrypt
const bcrypt = require('bcryptjs')

// bcrypt.hashSync(明文密码, 随机盐的长度)返回值是加密之后的密码字符串
password = bcrypt.hashSync(password, 10)
// 在用户进行修改密码,或者登录的时候,需要对密码进行验证
// 调用 bcrypt.compareSync(用户提交的密码, 数据库中的密码) 方法比较
// 返回值是布尔值(true 一致、false 不一致)
const compareResult = bcrypt.compareSync(password, results[0].password)

原理

bcrypt是一种基于哈希函数的加密算法,它使用一个密码和一个盐值作为输入,生成一个固定长度的密码哈希值。

bcrypt的盐值是一个随机生成的字符串,与密码一起用于哈希函数中,使得相同的密码在每次加密时都会生成不同的哈希值。

bcrypt的另一个重要特点是它使用了一个加密算法来混淆密码哈希值。这个加密算法使用一个密钥和一个初始化向量(IV)来加密密码和盐值。

加密后的数据被存储在数据库中,用于后续的密码验证。

bcrypt的加密过程可以分为以下几个步骤:

  1. 生成盐值:bcrypt使用一个随机数生成器生成一个随机的盐值。这个盐值是一个随机的字符串,用于与密码一起生成哈希值。
  2. 混合盐值和密码:将密码和盐值混合在一起,然后使用一个哈希函数生成一个固定长度的哈希值。
  3. 加密哈希值:使用一个加密算法将哈希值混淆,生成一个加密的哈希值。这个加密的哈希值被存储在数据库中。
  4. 验证密码:在验证密码时,用户输入密码,系统使用相同的盐值、哈希函数和加密算法生成一个新的哈希值。然后,将新的哈希值与数据库中的加密哈希值进行比较,如果它们匹配,则密码验证成功。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值