我对整个密码哈希业务还很陌生,所以我可能会遗漏一些明显的东西。
我正在查看 bcrypt 算法,特别是BCrypt.Net,我想知道为每个用户计算唯一的盐而不是随机盐是否更安全?
目前,盐和工作量(# 轮)暴露在散列密码字符串中。($2a$ + 2 位数的工作量 + $ + 22 个字符的盐 + 31 个字符的散列密码)我们不是通过给潜在的黑客提供盐来帮助他们(例如,如果他们想暴力破解管理员的密码)?
我们不能通过散列(例如使用 MD5 或 SHA1)他们的电子邮件地址来计算每个用户的盐吗?
如果我们只保存 bcrypt 散列密码的最后 31 个字符,而忽略标识符、工作量(如果我们保持不变),最重要的是盐。这不会让试图找到密码的人更难吗?
(从好的方面来说,我们将为大型用户数据库获得一些数据库空间,因为密码只有 31 个字符而不是 60 个字符)
我可能遗漏了一些明显的东西,因为我不能成为第一个做出这种反思的人。
马克