Bcrypt 哈希生成与校验工具
在浏览器中以所选的成本因子从明文生成 bcrypt 密码哈希,或将密码与现有 bcrypt 哈希进行校验。
正在加载工具…
Bcrypt 哈希生成与校验工具 — 在「生成」和「校验」之间切换,即可把明文密码转换为带盐的 bcrypt 哈希,或检查某个密码是否与现有哈希匹配。选择成本因子来控制哈希的计算速度和抗暴力破解能力,工具会为每次哈希自动生成一个随机盐。全部运算都通过 WebAssembly 版 bcrypt 在本地完成,密码和哈希绝不会离开你的浏览器。
Bcrypt 哈希生成与校验工具 是什么?
Bcrypt 哈希生成与校验工具是一款免费的浏览器内工具,用于 bcrypt 密码哈希算法——无数 Web 框架都用它来安全地存储密码。后端开发者、安全工程师以及正在学习身份认证的人,用它来生成用于填充数据库的 $2b$ 示例哈希、确认某个存储的哈希是否真的与已知密码匹配,或观察成本因子如何改变计算量。在「生成」模式下,你输入密码和成本因子(4-31),工具会为你生成一个随机的 16 字节盐,结果就是标准的编码 bcrypt 字符串,其中同时包含算法版本、成本、盐和摘要。在「校验」模式下,你粘贴密码和现有的 bcrypt 哈希,点击「校验」,工具便会告诉你二者是否匹配。由于 bcrypt 故意设计得很慢,较高的成本因子可能需要明显的片刻才能算完。
如何使用 Bcrypt 哈希生成与校验工具
- 选择「生成」以创建新哈希,或选择「校验」以将密码与现有哈希比对。
- 在「生成」模式下,输入或粘贴你想保护的明文密码。
- 设置成本因子(10 是常见默认值;越高越慢也越强)。
- 点击「生成哈希」,待结果出现后复制该 bcrypt 字符串。
- 在「校验」模式下,输入密码并粘贴 bcrypt 哈希,然后点击「校验」查看「匹配」或「不匹配」。
示例
以默认成本对密码进行哈希
输入
密码:correct horse battery staple,成本:10
输出
$2b$10$...(一个 60 字符的 bcrypt 哈希;由于盐是随机的,每次都不同)
将密码与存储的哈希进行校验
输入
密码:hunter2,哈希:$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
输出
匹配
错误的密码无法通过校验
输入
密码:wrongpass,哈希:$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
输出
不匹配
常见问题
- 我的密码或哈希会被发送到任何地方吗?
- 不会。哈希和校验完全在你的浏览器中通过 WebAssembly 版的 bcrypt 运行。你输入的任何内容都不会上传到或存储在任何服务器上,因此工具可离线使用,你的密码绝不会离开页面。
- 我该用多大的成本因子?
- 成本因子决定 bcrypt 执行的轮数;每加 1,工作量大约翻倍。Web 应用常用 10-12。更高的值能更好地抵抗暴力破解,但计算更耗时,因此过高的数值可能会让浏览器短暂卡顿。
- 为什么同一个密码每次生成的哈希都不一样?
- 每次哈希都会生成一个全新的随机 16 字节盐,并嵌入到结果中。同一个密码因盐不同而产生不同的哈希,这正是 bcrypt 安全的原因。校验仍能成功,因为盐会从存储的哈希中读取出来。
- 为什么校验提示我的哈希无效?
- 校验需要标准编码形式的完整 bcrypt 哈希,通常以 $2a$、$2b$ 或 $2y$ 开头,后跟成本和 53 个字符的盐与摘要。如果字符串有缺失或被改动,工具就无法读取盐并会报错。
- 我能把这个哈希直接用在我的应用里吗?
- 可以。输出是与常见 bcrypt 库兼容的标准编码 bcrypt 字符串,你可以存储它并在服务器上据此校验。对于真实系统,请在输入密码的地方生成哈希,而不要通过其他工具传递。