SHMILY 工具箱tool.ly1314.com

bcrypt 加解密验证

bcrypt 哈希生成、强度校验与密码验证。

cost 1–20 可调支持 $2a/$2b/$2y自带密码验证无需登录免费

使用说明

  • 输入密码,选择 cost(轮数,默认 10),立即生成 60 字符的 bcrypt 哈希;每次生成的盐随机,结果也不同。
  • 哈希格式完整解析:版本前缀($2a$ / $2b$ / $2y$)、cost、22 位 Base64 盐与 31 位摘要,逐段拆开显示。
  • 把哈希和候选密码一起粘进来即可验证是否匹配 —— 不需要服务器,全程在浏览器本地比对。
  • 实时测算当前机器的 cost 耗时曲线,并给出安全建议:cost 每 +1 耗时翻倍,目标是把单次哈希控制在 100–500 ms。
bcrypt 是加密吗?能解出原文吗?

不是加密,也不能解密。它是单向哈希:从密码算出哈希很容易,从哈希反推密码只能靠穷举。验证的做法是「用哈希里带的盐和 cost 重新算一遍,看结果是否相同」。

cost 选多少合适?

看耗时而不是数字。目标是单次哈希 100–500 ms:太慢会拖垮登录接口,太快则抗暴力能力不足。页面上有当前机器的实测耗时曲线,照着调即可。

$2a$、$2b$、$2y$ 有什么区别?

同一个算法的不同实现标记。$2b$ 是 OpenBSD 的修正版(2014 年,修复了超过 255 字节密码的溢出问题),也是当前推荐;$2y$ 是 crypt_blowfish 的标记;$2a$ 最早。三者哈希结构完全一致,互相兼容。

生成的哈希可以直接存进数据库吗?

可以,但数据库字段至少留 60 字符。另外务必整串保存(含 $2b$10$ 前缀和盐),验证时要用到里面的盐和 cost,只存摘要部分会导致永远验证不过。