关于此工具
Bcrypt 哈希生成器与验证器可生成和检验 bcrypt 密码哈希,绝不将你的密码发送到服务器。bcrypt 由 Provos 和 Mazières 于 1999 年设计,将 Eksblowfish 密钥调度包裹在自适应工作因子中:成本参数设定 2^cost 轮密钥设置,因此提高成本会使攻击者的每次猜测呈指数级变慢,而对单次合法登录仍然廉价。生成模式从浏览器的 crypto.getRandomValues 读取 16 个随机盐字节,以你选择的成本运行 Eksblowfish 设置,将 192 位的 "OrpheanBeholderScryDoubt" 常量加密 64 次,并输出标准模块化加密格式字符串 $2b$NN$ + 22 字符 base64 盐 + 31 字符 base64 摘要。
该算法作为本地加载的无 eval WebAssembly 版 bcrypt 运行,因此不上传任何内容,且加载后工具可离线工作。bcrypt 只考虑密码的前 72 字节——当你的输入超过该限制时,工具会警告你,因此你永远不会被静默截断所意外。成本因子可从 4 到 16 选择(默认 10);每一步使工作量翻倍,因此 12 比 10 慢四倍。
验证模式从现有哈希中解析 $2b$/$2a$/$2y$ 前缀、两位成本和内嵌的盐,用候选密码重新计算摘要,并报告匹配或不匹配。由于盐和成本都随哈希字符串本身传递,你只需密码和存储的哈希即可检验一次登录。一切都在页内计算——密码 100% 在你的浏览器中哈希,不上传任何内容。
常见问题
我应该选择什么成本因子?
成本设定 2^cost 轮密钥设置。10(默认)是常见基线;12 慢四倍,是交互式登录的良好现代选择。更高的成本更能抵御暴力破解,但计算耗时更长,因此需在安全性与每次登录可容忍的延迟之间权衡。
为什么我的长密码被截断了?
bcrypt 按设计只哈希输入的前 72 字节——超出部分被忽略。当密码超过 72 UTF-8 字节时工具会警告你,让你知道尾部未参与哈希。对于更长的秘密,请在 bcrypt 之前先用 SHA-256 预哈希。
我能验证以 $2a$ 或 $2y$ 开头的哈希吗?
能。验证模式接受 $2a$、$2b$ 和 $2y$ 前缀,它们是同一算法的可互换变体。它从哈希中读取成本和盐,用你的密码重新计算,并报告是否匹配。
我的密码会发送到任何地方吗?
不会。哈希和验证完全在你的浏览器中通过本地 WebAssembly 版 bcrypt 运行。密码、盐和哈希绝不离开你的设备,因此你可以安全地离线测试真实凭据。