Bcrypt哈希生成与校验器
Free完全在浏览器中使用WebAssembly生成和验证bcrypt密码哈希,可调节成本因子和盐值。
完全在您的浏览器中使用 WebAssembly 运行,不会向服务器发送任何内容。
预设
每 +1 大约使计算时间加倍。10-12 是现代硬件的常见范围。
最近活动
所有人可见。所有访客的最近 20 次使用记录,最新的在前。
暂无活动记录。快来成为第一个吧。
此工具的功能
此工具完全在您的浏览器中使用 WebAssembly 生成 bcrypt 密码哈希,可调节成本因子和盐值,还内置验证器可根据现有编码哈希检查密码。
工作原理
Bcrypt 将密码与一个 16 字节的随机盐值结合,并将其内部密钥设置算法重复 2^成本 次(成本因子),这正是它计算故意缓慢、因而暴力破解成本高昂的原因。结果被打包成形如 $2b$<成本>$<盐值+哈希> 的自包含编码字符串,使用 bcrypt 自身的 base64 风格字母表。由于盐值直接嵌入在该字符串中,之后验证密码只需读回盐值和成本、对候选密码重新执行相同的计算,然后比较输出即可。
解决的问题
- 无需运行任何服务器端代码即可生成用于存储的安全加盐 bcrypt 密码哈希。
- 在生产代码中调整之前,测试成本因子的更改如何影响哈希时间。
- 验证给定密码是否与之前生成的 bcrypt 哈希匹配。
- 检查现有 bcrypt 哈希中嵌入的版本和成本因子,而无需手动解码。
常见问题
›我应该使用什么成本因子?
10-12 是现代硬件上常见的范围,在安全性和每次哈希计算所需时间之间取得平衡。每增加 1,计算时间大约翻倍,因此成本为 12 所需的时间约为成本为 10 的 4 倍。仅在测试时使用较低的值(如 8),切勿用于真实的密码存储。
›为什么我的密码被拒绝,提示过长?
Bcrypt 对每个密码有严格的 72 字节限制,超出部分会被原始算法静默忽略,而此工具不愿默默这样做。请注意,这是字节限制,而非字符限制:带重音符号的字母和表情符号在 UTF-8 中每个可能占用 2-4 字节,因此密码在看起来还没到 72 个字符时就可能已达到限制。
›我的密码会被发送到任何地方吗?
不会。哈希完全在您的浏览器中使用 WebAssembly 计算,您在此输入的任何内容都不会传输到任何服务器。
›为什么编码哈希以 $2b$ 开头?
$2b$ 标识 bcrypt 算法版本,后面跟着两位数的成本因子,然后是一个包含盐值和最终哈希的 base64 类字符串。正因为这种自包含的格式,bcrypt 验证无需你单独存储盐值,它已经嵌入在哈希字符串中了。
›我应该生成自己的盐值还是使用随机盐值?
真实密码存储请使用随机盐值,这正是自动生成的 16 字节盐值的用途,每次页面加载都是唯一的。提供自定义的固定盐值仅适用于测试或重现特定已知哈希。
评论 (0)
觉得这个工具有用吗?留下评论、分享一个小技巧,或者告诉我们如何改进它。
暂无评论,快来抢沙发分享您的想法吧!