在线Bcrypt加密/校验工具 - 密码哈希、Salt轮数和明文验证

Bcrypt加密

Bcrypt校验

是否匹配:--

工具说明

这个工具适合做什么

在线Bcrypt加密/校验工具使用bcrypt对文本字符串进行加密和校验。Bcrypt是一个基于Blowfish密码的密码哈希函数,与其它哈希函数相比它具有更高的安全性以及较慢的运算速度。

尽管很多页面习惯把这类操作写成“加密”,但 bcrypt 更准确的定位是密码哈希与校验。它通常用于密码存储,而不是用于把任意文本可逆地还原回来。

生成、校验和解密的区别

操作输入输出是否可行
生成 hash明文密码和 cost 轮数新的 bcrypt hash可行
校验密码明文候选值和已有 bcrypt hash匹配或不匹配可行
解密 hash只有 bcrypt hash原始密码不可行

bcrypt hash 中已经包含 salt 和 cost 参数,所以同一个密码每次生成的 hash 可能不同,但只要使用校验流程仍然可以判断是否匹配。

Cost 轮数参考

轮数特点适合场景
8-9计算较快,安全余量较低本地演示、兼容旧系统、低风险测试。
10-12常见起步范围多数 Web 应用可从这里开始,再根据登录耗时调优。
13+计算更慢,成本更高只有在服务器性能和用户体验允许时才适合提高到此范围。
  • 应在接近生产环境的机器上测试轮数,而不是只看本地电脑的速度。
  • 轮数选择要兼顾暴力猜测成本、正常登录延迟和服务器并发压力。
  • 随着硬件性能变化,密码哈希策略也应定期复查。

登录校验流程

  1. 注册时用 bcrypt 计算用户密码,并只保存生成后的 hash。
  2. 登录时根据账号取出数据库里的 bcrypt hash。
  3. 把用户输入的候选密码和已存 hash 交给 bcrypt 校验函数。
  4. 只有校验返回匹配时,才认为密码正确。
          // 伪代码
storedHash = users.find(email).password_hash
isMatch = bcrypt.verify(candidatePassword, storedHash)
if (!isMatch) rejectLogin()
        

使用步骤

Bcrypt 加密:输入原密码,调整salt轮数(默认10),加密自动计算并显示在结果区域。Bcrypt 校验:输入原密码和之前加密后的hash代码,自动校验并显示校验密码是否一致。

  1. 在哈希区域输入原始密码或待处理文本。
  2. 根据性能与安全需求调整 salt 轮数。
  3. 查看自动生成的 bcrypt 结果;如需校验,再输入原文和现有 hash。
  4. 确认匹配结果后,再将 hash 用于系统配置、测试或排错。

使用时要注意

  • 轮数越高,通常暴力破解成本越高,但计算时间也会更长。
  • bcrypt 主要面向密码场景,不适合代替普通摘要、文件校验或消息签名流程。
  • 由于 bcrypt 自带 salt,即使同一段原文重复计算,多次得到的 hash 也可能不同,这属于正常现象。
  • 不要把生产环境的真实密码、真实 hash 或用户隐私数据暴露在公开调试记录中。

常见问题

为什么同一个密码每次生成的 bcrypt 结果都不一样?

因为 bcrypt 会把随机 salt 一起参与计算,所以相同原文也可能得到不同 hash。这正是它适合密码存储的重要原因之一。

bcrypt 可以解密回原文吗?

不能。bcrypt 不是可逆加密,而是哈希。正确做法不是“解密”,而是在登录或验证时把用户输入重新计算后与已有 hash 做匹配。

salt 轮数应该怎么选?

要结合系统性能和安全要求来定。轮数越高越安全,但也越耗时。调试时可以先用默认值,生产环境则应根据服务性能预算做评估。

bcrypt 校验为什么不需要单独保存 salt?

标准 bcrypt hash 字符串里已经包含算法版本、cost 轮数和 salt。校验函数会从已存 hash 中读取这些参数,再用候选密码重新计算并比较。

可以用 bcrypt 做文件校验或接口签名吗?

通常不适合。bcrypt 主要用于密码存储。文件校验、消息摘要、接口签名或鉴权令牌应选择 SHA-256、HMAC 或更适合对应场景的算法。

相关工具

  • 文本哈希计算:在线计算 MD5、SHA1、SHA256、SHA224、SHA512、SHA384、SHA3 和 RIPEMD160 摘要值
  • HMAC加密工具:在线HMAC加密(基于MD5、SHA1、SHA256、SHA224、SHA512、SHA384、SHA3、RIPEMD160 等哈希算法)