bcrypt
bcrypt是一种专门用于密码哈希的算法。它基于 Blowfish 加密算法,并引入了 盐值(Salt) 和 可调节的计算成本(Work Factor),使其成为存储用户密码的理想选择
特性
- 盐值(Salt):
bcrypt
自动生成并管理盐值,确保相同的密码生成不同的哈希值。- 盐值与哈希值一起存储,验证时自动提取。
- 可调节的计算成本(Work Factor):
- 通过调整 Work Factor,可以控制哈希计算的时间和资源消耗。
- 计算成本越高,暴力破解的难度越大。
- 抗暴力破解:
- 由于计算速度较慢,
bcrypt
能够有效抵御暴力破解和彩虹表攻击。
- 由于计算速度较慢,
格式
格式为 $2a$<cost>$<salt><hash>
例如:$2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
$2a$
:表示bcrypt
的版本。10
:Work Factor,表示哈希计算的迭代次数(2^10 = 1024 次)。N9qo8uLOickgx2ZMRZoMye
:盐值(22 个字符)。IjZAgcfl7p92ldGxad68LJZdL17lhWy
:哈希值(31 个字符)。
优点
- 安全性高:
- 内置盐值,防止彩虹表攻击。
- 可调节的计算成本,抵御暴力破解。
- 广泛支持:
- 大多数编程语言都提供了
bcrypt
的实现。
- 大多数编程语言都提供了
- 易于使用:
- 自动管理盐值,开发者无需手动处理。