跳到正文
马克工具箱

bcrypt 加密与校验

为密码生成 bcrypt 哈希,或者检查一个密码和已有的 bcrypt 哈希是否匹配,适合调试登录功能、初始化数据库里的管理员密码。计算全部在浏览器里完成,密码不会发送到服务器。

在浏览器本地运行,输入的内容和文件都不会上传

生成哈希

10

每加 1 计算量翻一倍。目前登录场景常用 10~12。

校验密码与哈希

使用步骤

  1. 在「生成哈希」里输入密码,拖动滑块设置成本因子,点「生成哈希」。
  2. 复制生成的哈希。每次生成都会使用新的随机盐,所以同一个密码的哈希每次都不同。
  3. 要校验,在右侧粘贴 bcrypt 哈希并输入密码,结果会自动显示是否匹配。

参数说明

成本因子
4~15,默认 10。计算量是 2 的成本因子次方,每加 1 耗时翻一倍。页面会显示本次在你的浏览器中的耗时,可以作为选值参考。
版本前缀
生成的哈希以 $2b$ 开头。校验时 $2a$、$2b$ 和 PHP password_hash 生成的 $2y$ 都可以直接使用。
72 字节限制
bcrypt 只使用密码的前 72 个字节(UTF-8 编码下一个汉字占 3 个字节)。超长时页面会提示,超出的部分不参与计算。

哈希的组成

$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy

常见问题

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

bcrypt 每次都会生成 16 字节的随机盐,盐就写在哈希里(成本因子之后的 22 个字符)。校验时从哈希中取出盐重新计算,所以不同的哈希都能校验通过。

bcrypt 能解密吗?

不能。bcrypt 是单向哈希,只能用候选密码重新计算后比对。网上的「bcrypt 解密」实际上都是拿常见密码逐个尝试。

成本因子设多少合适?

常见的建议是让一次计算在服务器上耗时 100 毫秒左右,目前一般是 10~12。太低容易被暴力破解,太高会拖慢登录、加重服务器负担。

和 MD5、SHA-256 比有什么区别?

MD5、SHA-256 设计目标是算得快,一张显卡每秒能试几十亿次,不适合直接存密码。bcrypt 故意算得慢,并自带随机盐,是专门为存储密码设计的。

密码会上传吗?

不会。哈希和校验都在浏览器里用 JavaScript 计算,断网也能用。

隐私说明

本工具完全在浏览器中运行,文件和文本都在你的设备上处理,不会上传到我们的服务器。

相关工具