bcrypt 加密/校验

生成 bcrypt 哈希并校验密码是否匹配。

什么是bcrypt 加密/校验?

bcrypt 是一种专门为密码存储设计的单向哈希算法,这个工具可以在浏览器里输入明文密码生成 bcrypt 哈希值,也可以输入明文密码和一个已有的 bcrypt 哈希,校验两者是否匹配。 和普通哈希(如 MD5、SHA-256)不同,bcrypt 内置了随机盐值(salt)和可调节的计算成本(cost factor,常见取值 10-12),生成的哈希字符串通常形如 $2b$10$N9qo8uLOickgx2ZMRZoMye...,其中 $2b$ 表示算法版本、10 表示成本因子,后面紧跟盐值和实际哈希结果,三者拼在一起存成一个字符串。

为什么使用bcrypt 加密/校验?

所有需要存储用户密码的系统都不应该明文保存密码,也不建议用 MD5/SHA 这类快速哈希,因为计算太快容易被彩虹表或暴力破解。bcrypt 通过刻意放慢计算速度(成本因子越高越慢)来提高破解成本,是业界公认的密码哈希方案之一(同类还有 Argon2、scrypt)。 这个工具适合后端开发调试认证逻辑时,快速生成一条测试用的 bcrypt 哈希写入数据库,或验证代码里生成的哈希是否和预期密码匹配,不需要跑起后端程序也能验证。

使用示例

生成一条测试哈希

输入密码 P@ssw0rd123,成本因子选 10,生成类似 $2b$10$eImiTXuWVxfM37uY4JANjQC.dyQK.wV9hRxdrjZ.wRRz6RfB3f6cS 的哈希字符串,可以直接写入测试数据库的密码字段。

校验密码是否匹配

输入密码 P@ssw0rd123 和上面生成的哈希,工具会用哈希里携带的盐值和成本因子对明文再算一次,结果一致则提示匹配成功,这正是后端登录校验的核心逻辑(bcrypt.compare)。

提高成本因子观察耗时变化

把成本因子从 10 调到 14,生成同一个密码的哈希耗时会明显变长(成本因子每加 1,计算量翻倍),可以直观感受为什么 bcrypt 能抵抗暴力破解。

使用提示

所有计算均在浏览器本地完成,不会把输入的密码发送到服务器,但仍建议不要用真实生产密码在任何在线工具里测试,改用无关的示例密码即可。

常见问题

cost(rounds)参数是什么意思?
cost 决定了 bcrypt 内部迭代计算的次数(2^cost 次),数值越大计算越慢、越难被暴力破解,一般 Web 应用推荐 10-12,服务器性能较弱时可适当降低。
为什么每次生成的哈希都不一样?
bcrypt 每次哈希会自动生成一个随机盐值并嵌入结果字符串中,因此同一明文每次生成的哈希都不同,但用「校验」功能仍能正确匹配。
密码会上传服务器吗?
不会。哈希与校验均在浏览器本地通过已加载的 bcryptjs 库计算完成,不发起任何网络请求。
bcrypt 是加密算法吗,能解密吗?
不是加密,是单向哈希,没有解密这一说。哈希不可逆,验证密码只能通过重新哈希再比较的方式,不存在从哈希还原出明文的正规方法。
同一个密码每次生成的哈希都不一样,正常吗?
正常,因为每次都会随机生成新的盐值,所以同一密码每次生成的哈希字符串都不同,但校验时依然能匹配成功,因为盐值就存在哈希字符串里,验证时会取出来复用。
成本因子该设多少?
常见推荐是 10-12,数值越大越安全但也越耗计算资源,需要在服务器性能和安全性之间权衡,一般不建议低于 10。
密码里的中文或超长字符串能处理吗?
bcrypt 对输入按字节处理,中文按 UTF-8 编码后可以正常参与运算;但需注意 bcrypt 传统实现只取密码前 72 字节参与计算,超出部分会被截断,这是算法本身的限制。

相关工具

← 返回工具箱· 数据均在浏览器本地处理,不上传服务器。