Bcrypt 加密
密码哈希与校验,适用于存储用户密码
什么是 Bcrypt 加密?
Bcrypt 是一种专门为密码存储设计的哈希算法,由 Niels Provos 和 David Mazières 在 1999 年提出。与 MD5、SHA 等通用哈希算法不同,Bcrypt 的设计目标就是让暴力破解变得极其缓慢,从而有效保护用户密码。
Bcrypt 的核心特性是内置盐值(salt)和可调节的计算成本(cost factor)。盐值确保即使两个用户使用相同的密码,生成的哈希值也完全不同,防止彩虹表攻击。Cost 参数控制哈希计算的轮数(2 的 cost 次方),轮数越高计算越慢,破解难度呈指数级增长。
一个标准的 Bcrypt 哈希值格式如:$2a$10$N9qo8uLOickgx2ZMRZoMy.MrqJ3vDfBO6mVHYqr/TgpFG,其中 $2a$ 是算法版本,10 是 cost 值,后面是盐值和哈希结果。
为什么需要 Bcrypt 加密工具?
密码安全是应用开发中最关键的安全环节之一:
- 用户注册:将用户密码通过 Bcrypt 哈希后存入数据库,即使数据库泄露也无法还原明文
- 登录校验:验证用户输入的密码是否与存储的 Bcrypt 哈希匹配
- 安全审计:检查线上系统存储的密码是否使用了安全的哈希算法
- 密码策略验证:测试不同 cost 值的计算耗时,选择安全与性能的平衡点
- 开发调试:本地开发时快速生成 Bcrypt 哈希用于测试数据
使用 IqsBot Bcrypt 加密工具,你可以快速生成密码的 Bcrypt 哈希值,也能校验明文密码与已有哈希是否匹配。
相比其他在线 Bcrypt 工具,IqsBot 的核心优势是纯浏览器端运行——你的密码不会上传到任何服务器,完全在本地处理。对于密码这种最敏感的数据,这一点至关重要。
如何使用 IqsBot Bcrypt 加密工具
基础用法
生成哈希:
- 输入明文密码
- 设置 Cost 值(推荐 10–12)
- 点击「生成 Bcrypt 哈希」
- 复制生成的哈希值
校验密码:
- 切换到「校验密码」标签
- 输入待校验的明文密码
- 输入已有的 Bcrypt 哈希值
- 点击「校验」查看匹配结果
高级功能
- Cost 调节:支持 4–15 的 cost 值,值越高越安全但越慢
- 自动加盐:每次生成哈希自动使用随机盐值
- 密码校验:验证明文与哈希是否匹配,用于登录验证逻辑
- 本地计算:密码永远不会离开浏览器
使用示例
示例1:生成密码哈希
明文密码:MyP@ssw0rd
Cost:10
生成结果:$2a$10$xK5L3nHqMGZ7bYkV1T2P5OX8rGJE4WKcSnRLnFh6tQDvN9i2m4bHe
示例2:校验密码
明文密码:MyP@ssw0rd
Bcrypt 哈希:$2a$10$xK5L3nHqMGZ7bYkV1T2P5OX8rGJE4WKcSnRLnFh6tQDvN9i2m4bHe
结果:密码匹配
常见问题
Q: Bcrypt 和 MD5/SHA 有什么区别?
A: Bcrypt 是专门为密码设计的慢哈希算法,内置盐值和可调成本因子,攻击者每秒只能尝试很少次。MD5 和 SHA 是通用哈希算法,计算速度极快(每秒可尝试数十亿次),不适合直接用于密码存储。在现代应用中,密码应始终使用 Bcrypt、Argon2 等慢哈希算法。
Q: Cost 值应该设多少?
A: 推荐设置为 10–12。Cost 值表示计算轮数为 2 的 cost 次方,值越高越安全但耗时越长。Cost 10 大约需要 100ms,Cost 12 大约需要 400ms,Cost 15 可能需要数秒。选择的原则是在用户可接受的登录等待时间内尽可能高。
Q: Bcrypt 哈希值可以直接存入数据库吗?
A: 可以,这正是 Bcrypt 的标准用法。将生成的哈希值(如 $2a$10$...)直接存入数据库的密码字段。验证时取出哈希值与用户输入的明文进行比对即可。注意字段长度至少 60 个字符。
Q: 为什么每次生成的哈希值不一样?
A: 这是正常现象。Bcrypt 每次生成哈希时都会使用随机盐值,盐值不同哈希结果就不同。但这不影响密码校验——Bcrypt 校验时会从哈希值中提取盐值,重新计算后比对。
Q: 我的密码会上传到服务器吗?
A: 绝对不会。IqsBot 的所有工具都运行在浏览器本地,你的明文密码、哈希值都不会离开你的设备。即使断网也能正常使用。
Q: Bcrypt 哈希可以反推回明文吗?
A: 不能。Bcrypt 是单向哈希算法,理论上无法从哈希值反推出明文。攻击者只能通过不断尝试不同密码来暴力破解,而 Bcrypt 的高计算成本使得这种攻击极其缓慢。