Bcrypt-密码加密---kalrry

本文介绍了Bcrypt密码加密算法,它是一种安全的单向加密方式,使用Blowfish算法,通过salt和cost增加破解难度。Bcrypt在Node.js中的使用包括安装bcrypt模块,使用genSaltSync生成salt,hashSync进行加密,以及compareSync进行密码验证。相较于MD5,Bcrypt的计算更慢,但安全性更高。
摘要由CSDN通过智能技术生成

一、简介

Bcrypt 是跨平台文件加密工具,由它加密的文件可在所有支持的操作系统和处理器上进行转移。它的口令必须是8至56个字符,并将在内部被转化为448位的密钥。bcrypt 使用的是布鲁斯·施内尔在1993年发布的 Blowfish 加密算法。具体来说,bcrypt 使用保罗·柯切尔的算法实现。随bcrypt一起发布的源代码对原始版本作了略微改动。

  1. ​Bcrypt 算法相对来说是运算比较慢的算法,在密码学界有句常话:越慢的算法越安全。算法越慢,黑客破解成本越高.
  2. 通过 saltcost 这两个值来减缓加密过程,加密时间(百ms级)远远超过md5(大概1ms左右)对于计算机来说,Bcrypt 的计算速度很慢,但是对于用户来说,这个过程不算慢。
  3. ​Bcrypt是单向的,而且经过 saltcost 的处理,使其受 rainbow 攻击破解的概率大大降低,同时破解的难度也提升不少,相对于 MD5 等加密方式更加安全,而且使用也比较简单。

​Bcrypt 加密后的字符串形如:

$2b$10$2UCl0qI6K7tgtFmcO.DzdOKmBxfQorIuUV8Hdb12go7sHJitOV9w.// 其中:
// $是分割符,无意义;
// 2b是bcrypt加密版本号;
// 10是cost的值;
// 后面的前22位是salt值;再然后的字符串就是密码的密文了;

​Bcrypt 算法将 salt 随机并混入最终加密后的密码,验证时也无需单独提供之前的 salt,从而无需单独处理 salt 问题。

二、使用

1. 安装

npm i bcrypt --save

2. 加密代码

//1、引入模块
let  bcrypt= require("bcrypt");
//2、 产生salt
let salt = bcrypt.genSaltSync(11); // 11 是迭代次数
//3、加密
// bcrypt.hashSync(用户注册时输入的密码,salt); 
let pass = bcrypt.hashSync("123456",salt); 
console.log("pass",pass);//pass就是加密后的结果,把这个可以存储到数据库中
// $2b$10$1MtFAztjfpDTm8z.PjQTwOo6k4FrRiXwbZKq0oAKWqWI94mhzJfTG
// $2b$11$jMC6xi32MVFDApY.valjJ.f7W5gGXQoLj3VZlrPQ8Fik.pVQ/szTK

3. 对比

查看用户输入密码和数据库中是否一致

// 验证密码是否正确
//1、引入模块
let  bcrypt= require("bcrypt");
// let isMatch = bcrypt.compareSync(用户登录时输入的密码,数据库中拿到的密码);
let isMatch = bcrypt.compareSync("123456","$2b$11$jMC6xi32MVFDApY.valjJ.f7W5gGXQoLj3VZlrPQ8Fik.pVQ/szTK");
console.log(isMatch);//true:表示密码一致;false:密码不一致

参考

  1. Bcrypt加密新认识
  2. 密码学系列之:bcrypt加密算法详解
  3. 必看
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kalrry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值