现在我在数据库(用户表)中有一个“salt”列和一个“password”列,varchar(64)并将sha-256哈希值作为值。
您是否认为在密码验证期间消除盐列并使用用户的电子邮件地址生成盐是一个好主意?这样可以节省数据库中的一些空间。
答案 0 :(得分:5)
我不认为存储随机盐是一个问题,而不是从用户的其他列派生它们。
但是,如果您决定使用一个或多个其他列作为salt,则需要100%确保所选值永远不会更改。在您的示例中,如果用户更改了电子邮件地址,则您无法验证其密码。
答案 1 :(得分:2)
盐永远不会改变。电子邮件地址可以。你对盐柱去除的想法是DBA相当于过早优化,带来灾难性后果的后果。
答案 2 :(得分:2)
请参阅this answer,了解为什么应该为每个密码创建使用随机盐。