Bcrypt Hash Generator
One input per line. Output is numbered to match the input order.
Pinned tools are listed in your favourites on the home page.Copies a link to this tool that carries your current input, so it opens ready to run.Gives you an iframe snippet for putting this tool on your own site.
Ctrl+Enter Run · Ctrl+Shift+C Copy · Esc Clear
Understand Bcrypt Hash Generator
以可配置的成本因子把密码哈希成 $2b$ 格式,并可用它产生的哈希校验密码。
How it works
密码哈希是刻意做慢的。成本因子是一个指数,因此每加一档工作量就翻倍:成本 12 是成本 10 的四倍,而离线猜测的攻击者也会遭遇同样的减速。每次哈希都会生成 16 字节随机盐并存进输出字符串,因此选了同一个密码的两个用户会得到不同的哈希,一张预计算的彩虹表也无法攻击整个数据库。工作本身是把 Blowfish 密钥编排跑 2^cost 次——这份昂贵的初始化正是该算法的全部要义,也正是它抵御 GPU 并行的原因,而正是这种并行让 SHA-256 这类快速哈希在此处成为糟糕的选择。
When to use it
- 在把生产环境的成本因子调高之前,看看每个成本档位算一次哈希需要多久。
- 排查登录问题时,读懂 $2b$ 字符串的各个部分——版本、成本、盐、摘要。
- 弄明白为什么存储的密码哈希各自携带自己的盐,而不是共用一个。
- 为本地夹具或种子脚本生成一次性哈希,那里的值并非真实凭据。
Watch out for
- 成本是指数,不是百分比。从 10 提到 14 会让每次登录对你的服务器也慢十六倍,因此请依据在你自己硬件上实测的延迟来调高它,而不是照搬某处看到的数字。
- 绝不要把正在使用的密码放进网页里做哈希。哈希应当发生在你的服务器上,那里明文经 TLS 抵达,从不被渲染,也从不进入日志行或表单字段。
- 调高成本因子并不会升级你已经存好的哈希。成本被固化在每一个字符串里。标准的迁移做法是在该用户下次成功登录时重新哈希,那是你唯一正当持有明文的时刻。
- bcrypt 本身会忽略密码前 72 字节之后的一切。较长的口令短语会静默丢掉尾部,如果你接受这类口令,或在 bcrypt 之前对输入做了预哈希,这一点就很关键。
Not the right tool for: 生成你要在生产环境中存储的哈希。那应当在你的应用内部用维护良好的库来生成——在 OWASP 的密码存储指南中,Argon2id 是当前的首选建议,成本 10 及以上的 bcrypt 是被接受的替代方案。
Frequently Asked Questions
什么是密码哈希?
密码哈希用单向函数把密码变换成固定长度的字符串(哈希值)。数据库存储的是哈希而不是明文——即使数据库泄露,攻击者也读不到原始密码。bcrypt 是推荐的哈希算法,因为它刻意做得很慢,使暴力破解不切实际。
密码哈希中的盐是什么?
盐是在哈希之前加到密码上的随机值,它让相同的密码也产生各不相同的哈希。bcrypt 会自动生成 16 字节随机盐并把它嵌入输出的哈希中。没有盐,攻击者就能用预先计算的彩虹表一次性破解多个哈希。
bcrypt 哈希能被解密吗?
不能——bcrypt 是单向函数,没有解密。要校验密码,就用存储的盐对输入运行 bcrypt,再把结果与存储的哈希比对。若一致,密码即正确。这种设计意味着连应用的开发者也无法取回原始密码。
How to Use Bcrypt Hash Generator
- Paste or type your input in the input area above.
- The tool processes your input automatically or click Run.
- Copy or download the result using the action buttons.
- Use Ctrl+Enter to run quickly from the keyboard.