用途:bcrypt 是专为密码存储设计的慢速哈希函数,内置盐值以抵御彩虹表攻击,适合在数据库中安全存储用户密码、登录时校验明文密码、维护既有认证后端,以及随时间调整计算成本以应对硬件破解能力提升。
主要能力:输出标准 60 字符 Modular Crypt Format 字符串,包含算法标识(如 2b)、工作因子、128 位盐与 184 位哈希;提供 genSalt、hash、compare、getRounds 等接口;compare 以恒定时间执行,可防止侧信道时序攻击。
使用方式:以 Node.js 为例,import bcrypt from "bcrypt";设置 saltRounds(示例为 10 或 12),用 await bcrypt.hash(明文, saltRounds) 生成哈希并存入数据库;登录时用 await bcrypt.compare(明文, 哈希) 校验。也可先 await bcrypt.genSalt(SALT_ROUNDS) 再哈希。
最佳实践:工作因子至少 12,建议以生产服务器约 250ms 每次哈希为基准;登录成功时若 bcrypt.getRounds(hash) < 12 可动态升级旧哈希;注意 72 字节截断限制,超长口令可先用 SHA-256 预哈希;始终使用异步 hash(),避免阻塞事件循环的 hashSync()。不要用 MD5、SHA-1 或普通 SHA-256 存密码,不要手工生成盐,不要记录明文密码。
常见问题:参数为 null/undefined 会报 Illegal arguments;盐轮数过高(>15)会导致 CPU 占用高、响应慢;compare 参数顺序应为 (候选密码, 已存哈希)。
限制:资料未提供具体平台支持范围、安装命令、收费与价格信息,暂未提供。