Bcrypt 哈希生成器
在浏览器中直接生成带随机盐的 bcrypt 密码哈希。免费、快速、完全本地运行。
你的输入永远不会离开你的设备。
成本越高越安全,但计算越慢。成本 10 是合理的默认值。
验证 Bcrypt 哈希
什么是 Bcrypt?
Bcrypt 是由 Niels Provos 和 David Mazières 基于 Blowfish 密码算法设计的密码哈希函数。它被广泛用于安全存储密码,因为它刻意设计得较慢,并且每个哈希都包含一个随机盐。
与 SHA-256 这类通用哈希函数不同,bcrypt 专为密码而设计。它的“慢”是一种特性:它让暴力破解和字典攻击的成本显著上升,即使数据库泄露,破解密码也几乎不现实。
Bcrypt 是单向哈希函数,不是加密。bcrypt 哈希无法被解密回原始密码。验证时,用相同的盐对候选密码重新哈希,再比较结果。
如何生成 Bcrypt 哈希
- 1
在输入框中输入密码或文本。
- 2
选择 bcrypt 成本 / 轮数因子。
- 3
点击“生成”,使用全新的随机盐创建 bcrypt 哈希。
- 4
复制生成的 bcrypt 哈希,用于你的应用。
什么是 Bcrypt 成本 / 轮数?
bcrypt 的成本因子(也称轮数)控制哈希计算的开销。成本每增加 1,所需的计算量大约翻倍,因为底层的密钥调度要执行 2^cost 次迭代。
成本越高,哈希越慢,对暴力破解的抵抗越强——但服务器验证密码时的 CPU 消耗也越大。成本越低则越快,但更弱。
并不存在对所有人都适用的“最佳”成本。合适的值取决于你的服务器硬件和需要处理的密码数量。成本 10 到 12 是常见的起点;你应该根据目标硬件调整,使哈希耗时可接受但不过长。
这个 Bcrypt 生成器安全吗?
- •所有 bcrypt 计算都在你的浏览器本地完成。你的密码输入永远不会上传到 UtilForge 服务器。
- •本工具不会把输入存入 localStorage,不会写入 URL,也不会发送给任何分析或追踪服务。
- •如果你不放心,请不要在任何第三方工具中输入真实的生产密码。本工具用于测试、开发、学习和验证。
- •对于生产系统,请始终在你自己的可信服务器上使用经过实战检验的库来执行 bcrypt 哈希。
Bcrypt 与 SHA-256
SHA-256 是一种快速的通用密码学哈希。这种速度恰恰是它不适合单独用于密码存储的原因:攻击者在现代硬件上每秒可以尝试数十亿次 SHA-256 猜测。
Bcrypt 专为密码哈希而设计。它刻意较慢,并具有可调节的成本因子,你可以随着硬件变快而提高所需的工作量,从而显著提高暴力破解的成本。
请记住:bcrypt 是哈希,不是加密。它不可逆,设计目的是保护存储中的密码——而不是加密数据。
相关工具
常见问题
什么是 bcrypt 哈希?
bcrypt 哈希是 bcrypt 密码哈希函数生成的定长字符串。它包含算法版本、成本因子、随机盐以及最终摘要——例如 $2b$10$...。由于每个哈希都内嵌自己的盐,同一个密码每次生成的哈希都不同。
bcrypt 是加密还是哈希?
bcrypt 是哈希,不是加密。哈希是单向函数:你可以把密码变成哈希,但无法把哈希还原成密码。而加密则可以在正确密钥下被逆转。
bcrypt 是如何工作的?
bcrypt 的设计源自 Blowfish 分组密码。它生成一个随机盐,与密码结合,然后反复执行昂贵的密钥调度(2^cost 次)以产生最终摘要。盐和成本都存储在哈希内部,因此验证时可以重现相同的计算。
什么是 bcrypt 成本?
成本因子决定 bcrypt 执行密钥调度的迭代次数。成本每增加 1,工作量翻倍。成本 10 是常见默认值,而 12 或 13 耗时逐级增加,但更能抵抗暴力破解。
bcrypt 和 SHA-256 有什么区别?
SHA-256 快速且通用,因此不适合单独用于密码存储。bcrypt 刻意较慢且成本可调,使暴力破解密码困难得多。存储密码时应使用 bcrypt(或其他专用密码哈希函数),而不是直接使用 SHA-256。
我可以在浏览器中生成 bcrypt 哈希吗?
可以。本工具使用 JavaScript 在你的浏览器中完全执行 bcrypt 算法,无需服务器往返,你的输入保留在你的设备上。
这个 Bcrypt 生成器会把我的密码发送到服务器吗?
不会。所有哈希都在客户端完成。你的密码绝不会被传输、存储或记录。本页面不会对你的输入做任何分析或追踪。
bcrypt 哈希可以被解密吗?
不能。bcrypt 是单向哈希函数。bcrypt 哈希无法被解密回原始密码。验证密码的唯一方法是用相同的盐重新哈希并比较结果。
Bcrypt 和 Argon2 应该如何选择?
两者都是专用的密码哈希函数,也都是不错的选择。Bcrypt 自 1999 年以来久经考验,并被所有主流语言支持。Argon2 在 2015 年赢得了密码哈希竞赛,并增加了内存和并行度参数,使其更能抵抗 GPU 破解。Argon2id 正日益成为新项目的默认推荐;bcrypt 仍然是一个安全、可移植的选择。
bcrypt 对密码长度有限制吗?
有。Bcrypt 只使用输入的前 72 个字节——大多数库会静默截断更长的密码。如果您的应用必须接受很长的口令,请在 bcrypt 之前先对密码进行预哈希(例如使用 SHA-256),或者考虑使用 Argon2。
bcrypt 哈希中的 $2a$、$2b$ 和 $2y$ 是什么意思?
前缀标识 bcrypt 算法版本。$2a$ 是原始版本;$2b$ 修复了 8 位字符处理中的错误,是当前的推荐版本;$2y$ 是 $2b$ 在 PHP/crypt 中的等价形式。三者在实际使用中可以互换验证——前缀主要影响库的兼容性。
我可以在 Node.js、PHP 或 Python 中使用这个哈希吗?
可以。Bcrypt 是一种标准算法,因此这里生成的哈希可以在任何实现 bcrypt 的地方使用:Node.js(bcrypt 或 bcryptjs 包)、PHP(使用 PASSWORD_BCRYPT 的 password_hash())、Laravel(Hash::make())以及 Python(bcrypt 包)。由于每个哈希都内嵌自己的盐,不同库生成的哈希完全可以互换。
发现此工具有问题?
报告问题