— 本地哈希
关于此工具
bcrypt 是一种刻意设计得很慢的密码哈希函数,这使得暴力破解攻击的代价高昂。它将盐(salt)内置到哈希中,并暴露一个 cost 因子(工作因子),随着硬件性能提升,你可以逐渐调高它。该工具既能对密码进行哈希,也能根据已存储的 bcrypt 哈希验证明文密码,因此你无需编写脚本即可测试自己的身份验证逻辑。
哈希与验证均通过 bcryptjs 在你的浏览器中本地运行,因此密码绝不会被传输。对大多数应用来说,10–12 的 cost 因子是合理的默认值;更高的值更安全但更慢。请注意,bcrypt 会截断超过 72 字节的输入——对于更长的密钥,请先对其进行预哈希。
密码在本地进行哈希与验证——不会发送到任何地方。
常见问题
我应该使用什么 cost 因子?
对于典型的 Web 登录场景,10 到 12 的 cost 在安全性与速度之间取得了平衡。每提高一级,工作量就翻一倍;请在你的生产硬件上做基准测试,并选择能将哈希时间保持在大约 250ms 以内的最高值。
为什么相同的密码每次生成的哈希都不同?
bcrypt 会为每次哈希生成一个随机盐,并将其存储在输出内部,因此相同的密码会产生不同的哈希。验证仍然有效,因为盐会从被检查的哈希中读回。
我能从哈希中恢复原始密码吗?
不能——bcrypt 在设计上是单向的。你只能验证某个候选密码是否与哈希匹配,而这正是此处的“验证”模式所做的事情。