WMW

Bcrypt哈希生成与校验器

Free

完全在浏览器中使用WebAssembly生成和验证bcrypt密码哈希,可调节成本因子和盐值。

完全在您的浏览器中使用 WebAssembly 运行,不会向服务器发送任何内容。

预设

每 +1 大约使计算时间加倍。10-12 是现代硬件的常见范围。

最近活动

所有人可见。所有访客的最近 20 次使用记录,最新的在前。

暂无活动记录。快来成为第一个吧。

评论 (0)

觉得这个工具有用吗?留下评论、分享一个小技巧,或者告诉我们如何改进它。

访客评论在发布前会经过审核。 登录 即可立即发布。

暂无评论,快来抢沙发分享您的想法吧!

此工具的功能

此工具完全在您的浏览器中使用 WebAssembly 生成 bcrypt 密码哈希,可调节成本因子和盐值,还内置验证器可根据现有编码哈希检查密码。

工作原理

Bcrypt 将密码与一个 16 字节的随机盐值结合,并将其内部密钥设置算法重复 2^成本 次(成本因子),这正是它计算故意缓慢、因而暴力破解成本高昂的原因。结果被打包成形如 $2b$<成本>$<盐值+哈希> 的自包含编码字符串,使用 bcrypt 自身的 base64 风格字母表。由于盐值直接嵌入在该字符串中,之后验证密码只需读回盐值和成本、对候选密码重新执行相同的计算,然后比较输出即可。

解决的问题

常见问题

我应该使用什么成本因子?

10-12 是现代硬件上常见的范围,在安全性和每次哈希计算所需时间之间取得平衡。每增加 1,计算时间大约翻倍,因此成本为 12 所需的时间约为成本为 10 的 4 倍。仅在测试时使用较低的值(如 8),切勿用于真实的密码存储。

为什么我的密码被拒绝,提示过长?

Bcrypt 对每个密码有严格的 72 字节限制,超出部分会被原始算法静默忽略,而此工具不愿默默这样做。请注意,这是字节限制,而非字符限制:带重音符号的字母和表情符号在 UTF-8 中每个可能占用 2-4 字节,因此密码在看起来还没到 72 个字符时就可能已达到限制。

我的密码会被发送到任何地方吗?

不会。哈希完全在您的浏览器中使用 WebAssembly 计算,您在此输入的任何内容都不会传输到任何服务器。

为什么编码哈希以 $2b$ 开头?

$2b$ 标识 bcrypt 算法版本,后面跟着两位数的成本因子,然后是一个包含盐值和最终哈希的 base64 类字符串。正因为这种自包含的格式,bcrypt 验证无需你单独存储盐值,它已经嵌入在哈希字符串中了。

我应该生成自己的盐值还是使用随机盐值?

真实密码存储请使用随机盐值,这正是自动生成的 16 字节盐值的用途,每次页面加载都是唯一的。提供自定义的固定盐值仅适用于测试或重现特定已知哈希。

相关工具