数据安全提示: 所有计算均在您的浏览器本地完成,密码和哈希值不会上传到服务器。
Bcrypt 哈希计算器
基于 bcryptjs 2.4.3
操作模式:
当前:密码哈希生成
成本因子 (Cost Factor)
10
快速 (4)
安全 (15)
约 100ms (推荐)
密码
长度: 20
强度: 很强
自定义盐值 (22字符)
长度: 0/22
密码
长度: 0
Bcrypt 哈希值
正在计算 Bcrypt 哈希...
Bcrypt 哈希结果
$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
示例密码的 Bcrypt 哈希值 (成本因子:10)
长度: 60
Bcrypt 哈希结构
格式: $2b$[成本]$[22盐值][31哈希]
60字符
Bcrypt 算法原理
Bcrypt 基于 Blowfish 加密算法,通过引入成本因子 (cost factor) 使哈希计算变得“故意缓慢”,从而抵抗暴力破解和硬件加速攻击。
1. 盐值生成
自动生成 128 位随机盐值(22 字符 Base64),确保相同密码输出不同哈希。
2. 成本因子
迭代次数为 2^cost,cost 通常为 10~12,随硬件进步可调。
3. EksBlowfish
使用密码和盐值初始化 Blowfish 密钥调度表,重复扩展密钥。
4. 输出格式
$2b$[cost]$[22盐值][31哈希],共 60 字符。
安全特性
内置盐值
自动加盐,防御彩虹表。
自适应成本
成本因子可随硬件升级而增加。
内存密集型
约 4KB 内存需求,抵抗 GPU/ASIC 加速。
抗长度扩展
设计上避免长度扩展攻击。
使用指南
- 成本因子选择:Web 应用推荐 10~12,高安全场景 12~14,开发测试可用 4~8。
- 密码长度:Bcrypt 最多处理 72 字符,超长部分自动截断。
- 存储空间:哈希值固定 60 字符,数据库字段建议 VARCHAR(60)。
- 异步计算:生产环境务必使用异步 API 避免阻塞事件循环。
- 定期升级成本:随着硬件进步,逐步提高成本因子并重新哈希密码。
代码示例 (Node.js)
// 安装: npm install bcryptjs const bcrypt = require('bcryptjs'); const saltRounds = 12; // 生成哈希 async function hashPassword(password) { const hash = await bcrypt.hash(password, saltRounds); return hash; } // 验证密码 async function verifyPassword(password, hash) { return await bcrypt.compare(password, hash); }