# bcrypt 在线加密与验证 - Argon2、scrypt、PBKDF2 密码哈希

> 免费在线密码哈希：生成并验证 bcrypt（cost 4～14，$2a/$2b/$2y）、Argon2id、scrypt、PBKDF2 哈希，自动识别 PHP、Django、Flask、passlib 格式，后台计算可取消。

- 网址: https://qilingtools.com/zh/bcrypt
- 分类: 开发工具 (https://qilingtools.com/zh/dev)
- 标签: [隐私安全](https://qilingtools.com/zh/tags/privacy), [开发](https://qilingtools.com/zh/tags/dev)
- 最后更新: 2026-10-26
- 价格: 免费，无需注册
- 隐私: 在浏览器本地处理，文件不上传服务器

开发登录功能、迁移用户表或排查“密码明明对却登不上”时，常常需要现场生成或验证一个密码哈希。这里可以生成四种主流算法的哈希：bcrypt（cost 4～14，可选 $2b$、$2y$、$2a$ 前缀）、Argon2（Argon2id / 2i / 2d，可调内存、迭代次数、并行度）、scrypt（N、r、p）和 PBKDF2（HMAC-SHA1/256/512），输出格式与 PHP password_hash、Django、Flask/Werkzeug、passlib 等常用框架兼容，并显示实际耗时，方便评估服务器上的成本参数。验证时只需粘贴哈希字符串和密码，工具会自动识别格式与参数，用同样的盐重新计算并比较。bcrypt、scrypt、Argon2 都是用纯 TypeScript 自行实现的，与 OpenBSD、PHP、Node.js、Python 的结果逐一对照测试过；PBKDF2 使用浏览器原生 WebCrypto。计算放在后台线程（Web Worker）里，参数调高也不会卡住页面，随时可以取消。密码和哈希都不会上传或保存。

## 使用步骤

1. 选择算法，输入密码，按需调整 cost、内存等参数和输出格式
2. 点击“生成”，复制哈希结果并查看耗时
3. 切到“验证密码”，粘贴哈希和密码，自动识别格式并校验

## 功能特点

- bcrypt：cost 4～14，$2a$ / $2b$ / $2y$，72 字节截断提示
- Argon2id / Argon2i / Argon2d（RFC 9106），可调内存、迭代与并行度
- scrypt（RFC 7914），显示所需内存
- PBKDF2-HMAC-SHA1/256/512（WebCrypto）
- 兼容 PHP、Django、Werkzeug / Flask、passlib 的哈希格式
- 粘贴即自动识别格式与参数
- Web Worker 后台计算，进度条与取消
- 显示计算耗时，便于选择成本参数

## 常见问题

### bcrypt 的 cost 应该设多少？

cost 每加 1，计算时间翻倍。OWASP 建议至少 10，常见取值是 10～12；更实用的标准是在你的服务器上单次哈希耗时约 100～300 毫秒，可以在这里先试出大概耗时（浏览器与服务器速度会有差异）。注意 bcrypt 只使用密码的前 72 个字节，超出部分不影响结果，工具会给出提示。

### $2a$、$2b$、$2y$ 有什么区别？

三者算法相同，只是修复历史 bug 的标记：$2a$ 是早期版本，$2y$ 是 PHP 在修复其实现缺陷后使用的前缀，$2b$ 是 OpenBSD 修复超长密码长度溢出后使用的前缀。对 72 字节以内的密码，三者计算结果相同，一般可以互相验证；新系统推荐 $2b$（PHP 默认输出 $2y$）。

### bcrypt、Argon2、scrypt、PBKDF2 该选哪个？

新项目首选 Argon2id（OWASP 推荐 m=19 MiB、t=2、p=1 起步），它同时消耗内存和时间，最能抵抗 GPU 暴力破解；bcrypt 生态最成熟、几乎所有语言都支持；scrypt 同样是内存困难型；PBKDF2 主要用于需要 FIPS 合规的场景，迭代次数要足够高（SHA-256 至少 60 万次）。千万不要用 MD5、SHA-256 这类快速哈希直接存密码。

### 为什么同一个密码每次生成的哈希都不一样？

因为每次都会随机生成新的盐（salt），盐和参数一起写在哈希字符串里。验证时从字符串中取出盐和参数重新计算，结果一致就说明密码正确，所以不同的哈希字符串可以对应同一个密码。这正是加盐的意义：相同密码在数据库里也不会出现相同的哈希，彩虹表因此失效。

## 相关工具

- [JSON 格式化](https://qilingtools.com/zh/json): 免费在线 JSON 格式化：一键美化、压缩，实时语法校验并定位到出错行列，支持树形视图折叠、键名排序、转义与去转义、Unicode 转中文、复制下载，数据不上传。
- [Base64 编解码](https://qilingtools.com/zh/base64): 免费在线 Base64 编码解码工具：支持中文 UTF-8、URL 安全变体，文本与 Base64 互转，实时转换，本地处理不上传。
- [URL 编解码](https://qilingtools.com/zh/url-encode): 免费在线 URL 编码解码工具：encodeURIComponent 与 encodeURI 两种模式，处理中文、空格与特殊符号，本地实时转换不上传。
- [JWT 解析](https://qilingtools.com/zh/jwt): 免费在线 JWT 解析工具：解码 JWT 的 Header 与 Payload，展示过期时间、签发时间等，本地解析不上传，保护令牌安全。
- [时间戳转换](https://qilingtools.com/zh/timestamp): 免费在线 Unix 时间戳转换工具：时间戳与日期互转，自动识别秒/毫秒，显示本地时间、UTC、ISO 8601 和相对时间，实时更新。
- [哈希计算](https://qilingtools.com/zh/hash): 免费在线哈希/摘要计算工具：对文本或文件计算 SHA-1、SHA-256、SHA-384、SHA-512，使用浏览器加密接口本地完成，文件不上传。
- [UUID 生成](https://qilingtools.com/zh/uuid): 免费在线 UUID 生成器：使用加密安全随机数批量生成符合 RFC 4122 的 UUID v4，可大写、去连字符、加花括号，一键复制。
- [进制转换](https://qilingtools.com/zh/base-convert): 免费在线进制转换工具：二进制、八进制、十进制、十六进制及任意 2–36 进制互转，支持大整数（BigInt），本地实时计算。
