1. Bcrypt 加密算法概述
Bcrypt 是一种专门为密码存储而设计的加密算法,由 Niels Provos 和 David Mazières 在1999年提出。它基于Blowfish加密算法,并加入了"盐"(salt)和"工作因子"(work factor)的概念,使其成为目前最安全的密码哈希算法之一。
1.1 Bcrypt 的核心特性
Bcrypt 之所以被广泛推荐用于密码存储,主要因为它具备以下几个关键特性:
- 自适应哈希:通过工作因子(cost factor)可以调整计算复杂度,随着硬件性能提升可以增加工作因子来保持安全性
- 内置盐值:自动生成随机盐值并与哈希结果合并存储,防止彩虹表攻击
- 计算密集型:故意设计为计算速度较慢,大幅增加暴力破解的难度
- 标准化输出格式:哈希结果包含算法标识、工作因子、盐值和实际哈希值,便于验证
提示:Bcrypt 的慢速特性是其安全性的关键,现代服务器每秒可以计算数百万次MD5哈希,但只能计算几百次Bcrypt哈希。
1.2 Bcrypt 与其他哈希算法的对比
下表对比了Bcrypt与常见哈希算法的安全性差异:
| 特性 | Bcrypt | SHA-256 | MD5 | PBKDF2 |
|---|---|---|---|---|
| 设计目的 | 密码存储 | 通用哈希 | 通用哈希 | 密钥派生 |
| 抗暴力破解 | 优秀 | 一般 | 差 | 良好 |
| 抗彩虹表 | 优秀 | 需加盐 | 需加盐 | 需加盐 |
| 计算速度 | 可调慢 | 快 | 极快 | 可调 |
| 输出长度 | 60字符 | 64字符 | 32字符 | 可变 |
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Bcrypt 的工作原理
2.1 Bcrypt 的算法结构
Bcrypt 算法可以分解为以下几个核心步骤:
- 生成随机盐值:自动生成128位的随机盐值
- 设置工作因子:确定迭代次数(2^cost)
- 执行EksBlowfish:使用扩展密钥的Blowfish算法进行加密
- 格式化输出:组合算法标识、工作因子、盐值和哈希结果
2.2 Bcrypt 的工作因子
工
