bcrypt 密码哈希生成与校验

用 bcrypt 给密码生成带随机盐的哈希,或者反过来校验「这个密码是不是这个哈希的原密码」。cost(计算强度)可在 4~14 之间调,每 +1 计算量翻倍。生成时会自动提示是否超过 bcrypt 的 72 字节上限 —— 超了的部分等于没设。全部在浏览器本地完成,密码不会离开你的机器。

工具界面在页面加载完成后显示在本段下方,可以直接使用。所有计算都在你的浏览器本地完成,输入的内容不会上传到服务器。

bcrypt 密码哈希生成与校验能做什么

用 bcrypt 给密码生成带随机盐的哈希,或者反过来校验「这个密码是不是这个哈希的原密码」。cost(计算强度)可在 4~14 之间调,每 +1 计算量翻倍。生成时会自动提示是否超过 bcrypt 的 72 字节上限 —— 超了的部分等于没设。全部在浏览器本地完成,密码不会离开你的机器。

怎么用bcrypt 密码哈希生成与校验

  1. 在「生成哈希」里输入要哈希的密码,建议 8 位以上,别用已有账号的真实密码
  2. 拖动「计算强度 cost」:默认 10(约几十毫秒),对安全性要求高可以调到 12
  3. 点「生成哈希」,结果形如 $2b$10$… 共 60 个字符,可一键复制或导出
  4. 要校验已有哈希,切到「校验哈希」标签,先粘贴那段 $2b$ 哈希
  5. 再输入待比对的密码,点「校验」,页面会直接告诉你匹配还是不匹配
  6. 哈希里能读出版本($2b$)和 cost,切过去时页面会自动显示出来

示例

输入:

correct horse battery staple(cost 10)

输出:

$2b$10$bFihFtdLGG7aMiuA3OKIL.PhYJzQ15RWNiAlBUC3ZlepVNDFy3A1m

这是一次真实生成的结果(拿它去「校验哈希」标签里配同样的密码,能验通过)。$2b$ 是版本、10 是 cost、后面 22 位是随机盐;同一密码再点一次生成,结果会完全不同。

使用技巧与注意点

常见问题

bcrypt 和 MD5 / SHA-256 有什么区别?

MD5、SHA-256 这类通用哈希是为「快」设计的,一秒能算上亿次,被拖库后可以被高速暴力破解。bcrypt 反过来——故意慢,还带随机盐,而且 cost 可以随硬件进步往上调。存密码应该用 bcrypt / scrypt / Argon2 这类慢哈希,不该用 MD5。

为什么同一个密码两次生成的哈希不一样?

因为每次都用新的随机盐,盐会写在哈希里($2b$10$ 后面那 22 个字符)。校验时程序从哈希里取出盐、用同样的 cost 重算一遍再比对,所以两次结果不同但都能校验通过。这样做的好处是同密码的两个用户哈希不同,攻击者没法批量对照。

cost 选多少合适?

看场景。网页/移动端登录一般 10~12;服务端批量任务可以更高。判断标准是「在目标机器上算一次约 100 毫秒」,太慢会拖垮登录接口,太快则抵挡不住暴力破解。本页上限卡在 14,因为再高浏览器会明显卡住。

密码超过 72 个字节会怎样?

bcrypt 算法本身只处理前 72 字节,多出来的部分不参与计算。也就是说前 72 字节相同的两个密码会被认为是同一个。本页会在输入超过 72 字节时给出红色提示,避免你以为加长密码提升了安全性。

在这里生成哈希安全吗?密码会不会被上传?

不会。bcrypt 的计算完全在你浏览器的 JavaScript 里完成,没有任何网络请求,密码和哈希都不经过服务器。但仍建议用测试用的密码,别把真实账号密码贴进任何网页工具。

相关工具

同类加密与解密工具

查看全部加密与解密工具