← 返回工具指南
工具指南bcrypt密码安全哈希账号安全工具

bcrypt 哈希怎么用?密码存储、salt、成本因子和校验指南

bcrypt 适合密码哈希存储,不是普通加密。这里讲 salt、cost、哈希校验、为什么不能明文保存密码和常见误区。

打开配套工具 →

用户密码不能明文保存,也不应该用可逆加密保存。更常见的做法是保存密码哈希。bcrypt 就是专门为密码存储设计的哈希方案之一。

你可以用 bcrypt 哈希生成 / 校验工具 本地测试密码和哈希是否匹配。

bcrypt 不是加密

加密通常可以解密回原文;bcrypt 哈希不能还原密码。登录时的流程是:

  1. 用户输入密码。
  2. 系统用同样算法计算哈希。
  3. 和数据库里的哈希比较。
  4. 匹配则登录成功。

数据库不需要知道明文密码。

salt 是什么

bcrypt 哈希里会包含 salt。即使两个用户密码相同,生成的哈希也通常不同。

这能减少彩虹表攻击风险。你不需要单独保存 salt,因为 bcrypt 哈希字符串里已经包含相关信息。

cost 成本因子

cost 决定计算有多慢。越高越难暴力破解,但登录计算也越慢。

选择 cost 时要结合服务器性能和登录量。不要盲目设特别高,导致正常用户登录变慢。

校验而不是解密

如果有人问“bcrypt 怎么解密”,答案是不能解密。你只能拿候选密码去校验。

这正是它适合存密码的原因。

迁移旧密码时怎么办

如果旧系统还在用 MD5、SHA1 或明文密码,不建议一次性要求所有用户重置。常见做法是在用户下次登录成功时,把旧密码校验通过后重新写入 bcrypt 哈希。

迁移期间要标记哈希版本,避免系统不知道某条记录应该用旧算法还是新算法校验。最终再逐步淘汰旧算法。

常见误区

总结

bcrypt 适合密码存储,因为它不可逆、有 salt、可调成本。不要用 Base64、MD5 或普通 AES 来保存登录密码。

需要测试哈希和密码是否匹配时,可以用 bcrypt 哈希生成 / 校验工具,但生产系统仍应在后端安全实现。