news 2026/5/30 9:06:47

bcryptjs是什么、加密和对比过程是怎样的(初级版)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
bcryptjs是什么、加密和对比过程是怎样的(初级版)

bcryptjs是什么?

bcryptjs是bcrypt的JavaScript实现,主要用于密码或其他字符串的加密(在Node.js中,bcrypt只能用来处理字符串,技术上可以用来处理其他诸如文件、对象等,但是花销的性能较大或者容易在加密过程中产生歧义),用于应对密码泄露或者数据库泄露以及密码的反向破解。

bcryptjs是如何进行加密的?

1.接收明文密码

2.生成随机的Salt(bcrypt自动完成)

同一个密码每次生成的Salt不同,这也是加密过程中“加盐”一次的来由。

3.设置cost(工作因子)

用于限定bcrypt的计算次数(2^cost次),cost每增加1,bcrypt的计算量都会翻倍,一般情况下我们会将cost定为10.

4.开始计算

不断用password+Salt扩展密钥,重复2^cost次,形成最终的storedHash(字符串)例如:

$2b$10$Ec3HpayMfx9EA.R4aH/.meKZQgEc8cYruU9JV8w2wWj5z/Lv4NyuW

拆解来看:

$2b$为bcrypt的版本

10 为cost

最后一段为Salt和hash,至于截至那里是Salt,只有bcrypt知道

bcrypt的核对过程是怎样的?

1.获取资源

拿到新的明文密码password和数据库存下的storedHash

2.资源解析

解析hash获取到bcrypt版本、cost、Salt以及hash

3.重新加密

利用新的明文密码password、解析得到的bcrypt版本、cost、Salt重新构造加密参数,然后执行bcrypt算法得到一个新的newStoredHash,将newStoredHash和storedHash做一次恒定时间比较,得出比对结果。这里所谓恒定时间比较参考 恒定时间比较示例代码分析 了解。

注:

bcrypt的加密是不可反推的,攻击者拿到storedHash只能解析到Salt+cost+hash,但是bcrypt加密是单向函数且有很高的计算成本(2^cost次),强行反推需要耗费很高的成本。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/27 4:57:35

AI自动解决iframe跨域问题:快马平台一键生成解决方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 请生成一个完整的iframe跨域解决方案代码,要求:1.包含服务端CORS配置示例(Node.js/Express) 2.前端iframe通信的安全设置 3.支持跨域cookie传递 4.提供postM…

作者头像 李华
网站建设 2026/5/29 4:45:46

3、使用Puppet创建首个清单及资源管理指南

使用Puppet创建首个清单及资源管理指南 1. 引言 在服务器配置和管理工作中,自动化工具能显著提升效率和准确性。Puppet作为一款强大的自动化工具,可帮助我们轻松管理服务器的配置。本文将深入介绍如何使用Puppet创建首个清单,以及如何利用其资源类型(文件、包和服务)进行…

作者头像 李华
网站建设 2026/5/20 23:04:39

6、Puppet资源使用全解析

Puppet资源使用全解析 1. 服务资源管理 在Puppet中,服务资源管理有一些特殊的属性和用法。 - hasstatus属性 :当 hasstatus 为 false 时,Puppet不会使用默认的系统服务管理命令来检查服务状态,而是在进程表中查找与服务名称匹配的运行进程。如果找到匹配的进程,P…

作者头像 李华
网站建设 2026/5/29 6:58:07

探索基于LS-DYNA的弹体斜侵彻冲击起爆炸药模拟:从SALE方法到举一反三

视频录制 基于lsdyna的SALE方法弹体斜侵彻冲击起爆炸药(点火增长模型),基于此视频可举一反三,解决冲击起爆ale/sale建模计算问题在爆炸力学与侵彻动力学领域,基于LS - DYNA的模拟研究有着重要地位。今天咱们就来聊聊基于LS - DYNA的SALE方法实…

作者头像 李华
网站建设 2026/5/29 10:03:46

图欧学习导航在K12教育中的实际应用案例

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个面向K12教育的图欧学习导航应用案例。系统需要包含学科知识点树状导航、错题自动归类与分析、学习进度可视化等功能。要求整合常见教材版本的知识点体系,支持拍…

作者头像 李华
网站建设 2026/5/27 12:55:21

18、容器控制与云资源编排:技术深入解析

容器控制与云资源编排:技术深入解析 1. 容器的数据存储与通信 容器的 volumes 属性可让其将 pbg-volume 挂载到 /usr/share/nginx/html 。要应用相关配置清单,可执行以下命令: sudo docker stop pbg-nginx sudo puppet apply /examples/docker_volume2.pp若一切正…

作者头像 李华