使用两种盐是个好主意吗?这意味着一个对用户来说是唯一的,一个对服务器来说是唯一的,当然使用 Bcrypt。
因此,例如,如果您使用 Golang 作为后端,从 /dev/random 生成 20 个字符的长盐,将其烘焙到 Golang 二进制文件中,并将其与从生成的 20 个字符的盐一起使用/dev/urandom 对每个用户都是唯一的?散列过程看起来像userSalt + serverSalt + 密码 = 密码摘要
这背后的想法是,即使攻击者可以访问您的数据库,他们仍然无法破解密码,因为他们还需要反编译您的服务器以获取 serverSalt。即使他们获得了 serverSalt,他们也需要生成彩虹表,由于 Bcrypt,这将需要很长时间。
先感谢您!