UtilForge

Bcrypt 哈希生成器

在浏览器中直接生成带随机盐的 bcrypt 密码哈希。免费、快速、完全本地运行。

你的输入永远不会离开你的设备。

成本越高越安全,但计算越慢。成本 10 是合理的默认值。

验证 Bcrypt 哈希

什么是 Bcrypt?

Bcrypt 是由 Niels Provos 和 David Mazières 基于 Blowfish 密码算法设计的密码哈希函数。它被广泛用于安全存储密码,因为它刻意设计得较慢,并且每个哈希都包含一个随机盐。

与 SHA-256 这类通用哈希函数不同,bcrypt 专为密码而设计。它的“慢”是一种特性:它让暴力破解和字典攻击的成本显著上升,即使数据库泄露,破解密码也几乎不现实。

Bcrypt 是单向哈希函数,不是加密。bcrypt 哈希无法被解密回原始密码。验证时,用相同的盐对候选密码重新哈希,再比较结果。

如何生成 Bcrypt 哈希

  1. 1

    在输入框中输入密码或文本。

  2. 2

    选择 bcrypt 成本 / 轮数因子。

  3. 3

    点击“生成”,使用全新的随机盐创建 bcrypt 哈希。

  4. 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 包)。由于每个哈希都内嵌自己的盐,不同库生成的哈希完全可以互换。

发现此工具有问题?

报告问题