salt缺失:使用bcrypt的hashpw生成哈希后盐值不完整是什么原因?
bcrypt哈希盐值截断/修改原因
这是bcrypt编码规则的正常表现,核心逻辑如下:
- bcrypt标准要求盐的原始长度为16字节,使用bcrypt自定义的Base64变体编码后对应固定22个字符,且第22位字符仅前2个比特位有效,剩余4个比特位会在哈希计算时被直接丢弃
- 对照bcrypt自定义Base64编码表,你传入的盐最后一位
v的二进制编码为110001,仅前2位11为有效位,丢弃后4位后对应编码为110000,查表后正好对应字符u,和你示例中输出的哈希前缀完全匹配 - 你提到的「哈希值是盐值后追加哈希运算结果组成的」规则没有问题,只是这里拼接的是经过bcrypt校验修正后的合法盐值,而非用户输入的原始盐字符串
内容的提问来源于stack exchange,提问作者user11538509
相关产品推荐
相关产品推荐

