bcrypt

bcrypt

起男 56 2025-02-28

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 的实现。
  • 易于使用
    • 自动管理盐值,开发者无需手动处理。