什么是Bcrypt哈希生成器?
使用bcrypt算法创建安全的加盐密码哈希。可用于数据库存储前的密码哈希,或将现有哈希与明文进行验证。
bcrypt 是众多生产环境登录系统背后的密码哈希算法。每次计算都会带上一段随机盐值,所以同样的密码也不会得到同样的哈希。代价系数(4 到 18)每加 1 计算量就翻倍,让暴力破解几乎不可能,同时把登录延迟控制在合理范围内。
使用方法
- 输入要哈希的密码或字符串,并选择4到18之间的代价因子(加盐轮数)。
- 点击生成以创建bcrypt哈希。代价因子越高,哈希越安全,但计算时间也越长。
- 复制生成的哈希用于您的应用程序,或使用验证标签页来检验密码与现有哈希是否匹配。
何时使用
- 把新注册用户的密码写入数据库之前进行哈希处理。
- 对照已有的 $2b$ 哈希,复现或测试登录流程。
- 在目标服务器上跑一遍,挑选合适的代价系数。
结果
一位后端开发者需要安全存储用户密码。他输入"MySecurePass123"并设置12轮加盐,得到一个$2b$哈希字符串后存入PostgreSQL数据库。
常见问题
- 生产环境应该用多大的代价系数?
- 现代服务器上,12 是常见的下限,14 正逐渐成为主流。每次登录哈希耗时控制在 200 到 500 毫秒比较合适。低于 100 毫秒太弱,高于 1 秒会让低端设备的用户体验变差。
- 为什么同一个密码每次哈希出来的结果都不一样?
- bcrypt 每次都会重新生成 16 字节的盐值,并把盐直接嵌入到哈希字符串里。这正是设计目的:即使两个用户都用 letmein 作密码,落到数据库里的也是两条完全不同的哈希,泄露后无法用单一彩虹表批量破解。
- 密码长度有限制吗?
- bcrypt 会悄悄截断 72 字节以后的内容。如果允许更长的密码短语,应先用 SHA-256 算一遍摘要,再把摘要喂给 bcrypt。多数应用把输入上限设为 64 到 72 字符就够用了。
- 能验证别的 bcrypt 库生成的哈希吗?
- 可以。$2a$、$2b$、$2y$ 这几个前缀在 PHP、Node、Python、Ruby、Go 和 Java 实现之间完全兼容。把任意一种实现产出的哈希粘到验证页,只要密码原文一致就会匹配通过。
- 2026 年了还要继续用 bcrypt 还是换 argon2?
- argon2id 是当下推荐的算法,但 bcrypt 依然安全,语言和框架支持也最广。如果系统已经在用 bcrypt,没必要紧急迁移。全新项目可以直接选 argon2。