使用步骤
- 在「生成哈希」里输入密码,拖动滑块设置成本因子,点「生成哈希」。
- 复制生成的哈希。每次生成都会使用新的随机盐,所以同一个密码的哈希每次都不同。
- 要校验,在右侧粘贴 bcrypt 哈希并输入密码,结果会自动显示是否匹配。
参数说明
- 成本因子
- 4~15,默认 10。计算量是 2 的成本因子次方,每加 1 耗时翻一倍。页面会显示本次在你的浏览器中的耗时,可以作为选值参考。
- 版本前缀
- 生成的哈希以 $2b$ 开头。校验时 $2a$、$2b$ 和 PHP password_hash 生成的 $2y$ 都可以直接使用。
- 72 字节限制
- bcrypt 只使用密码的前 72 个字节(UTF-8 编码下一个汉字占 3 个字节)。超长时页面会提示,超出的部分不参与计算。
哈希的组成
$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
2b:算法版本10:成本因子,即 2¹⁰ = 1024 轮N9qo8uLOickgx2ZMRZoMye:22 个字符的盐- 其余 31 个字符:哈希值
常见问题
为什么同一个密码每次生成的哈希都不一样?
bcrypt 每次都会生成 16 字节的随机盐,盐就写在哈希里(成本因子之后的 22 个字符)。校验时从哈希中取出盐重新计算,所以不同的哈希都能校验通过。
bcrypt 能解密吗?
不能。bcrypt 是单向哈希,只能用候选密码重新计算后比对。网上的「bcrypt 解密」实际上都是拿常见密码逐个尝试。
成本因子设多少合适?
常见的建议是让一次计算在服务器上耗时 100 毫秒左右,目前一般是 10~12。太低容易被暴力破解,太高会拖慢登录、加重服务器负担。
和 MD5、SHA-256 比有什么区别?
MD5、SHA-256 设计目标是算得快,一张显卡每秒能试几十亿次,不适合直接存密码。bcrypt 故意算得慢,并自带随机盐,是专门为存储密码设计的。
密码会上传吗?
不会。哈希和校验都在浏览器里用 JavaScript 计算,断网也能用。
隐私说明
本工具完全在浏览器中运行,文件和文本都在你的设备上处理,不会上传到我们的服务器。