CodeToolProCodeToolProFree Online Developer Tools
GitHub

Bcrypt Generator / Validator

Input

  • 10

    210 = 1,024 iterations

    Enter a password and click Generate to create a bcrypt hash.

    技术详情

    Bcrypt 哈希生成器的工作原理

    工具功能

    Bcrypt 哈希生成器可对密码进行安全哈希处理,生成带盐的 bcrypt 哈希值。Bcrypt 是基于 Blowfish 密码算法的适应性密码哈希函数,设计目标是速度慢且资源密集,以抵御暴力破解攻击。该工具支持配置成本因子(cost factor,即密码轮数),允许开发者根据安全需求调整哈希强度。


    常见开发者使用场景

    Bcrypt 是密码存储的行业标准:Web 应用在注册时使用 bcrypt 哈希用户密码后再存入数据库、登录验证时将输入密码与存储的哈希比对、以及定期提高成本因子以应对硬件性能的增长。Node.js、Rails、Django 等主流框架都推荐使用 bcrypt 作为默认密码哈希方案。Bcrypt 哈希值自身包含盐值,因此无需单独存储盐。

    对于其他密码哈希需求,可参考 哈希生成器哈希值计算器 的 SHA/MD5 算法。Scrypt 哈希生成器 提供了内存密集的替代方案。密码强度测试器 可评估输入密码的安全性。


    技术原理/相关概念

    Bcrypt 使用 Blowfish 加密算法的密钥调度阶段,通过成本因子(2ⁿ 轮,如 cost=12 即 2¹²=4096 轮密钥扩展)反复哈希,使哈希过程变慢。Bcrypt 哈希值格式为 $2a$[cost]$[22-char-salt][31-char-hash],例如 $2a$12$LJ3m4ys3GZ...。自适应特性意味着未来可以通过增加 cost 值使哈希过程安全持续升级,以对抗性能越来越强的 GPU/ASIC 暴力破解。Bcrypt 拥有 72 字节的密码长度上限。


    常见陷阱与注意事项

    • 成本因子选择:成本因子过低(如 4-6)无法提供足够的安全防护,过高(如 14+)则导致登录延迟过高影响用户体验。推荐 cost=12 作为当前折中。
    • 72 字节限制:超过 72 字节的密码会被截断,虽然多数用户密码在此范围内,但仍需注意边缘情况。
    • NULL 字节截断:Bcrypt 在遇到 NULL 字节(0x00)时会截断,需确保输入不包含 NULL 字节。
    • 版本标识:使用 $2a$ 或 $2b$ 版本(后者修复了某些语言中的 bug),避免使用旧的 $2$ 格式。

    何时使用此工具而非代码

    在快速生成测试密码哈希、验证哈希格式或快速测试成本因子性能时使用此工具。适合开发调试和安全评估场景。对于生产环境中的密码管理,必须使用编程语言的 bcrypt 库(如 Node.js 的 bcryptjs 或 bcrypt、Python 的 bcrypt 模块、Java 的 jBCrypt),它们提供异步哈希、正确的盐值生成和安全的比较方法(防止时序攻击)。