从其他用户字段生成盐


Generating salts from other user fields

现在我在数据库(用户表)中有一个"salt"列和一个"password"列,它们都是varchar(64)和sha-256哈希值。

您认为在密码验证期间取消salt列并使用用户的电子邮件地址生成salt是一个好主意吗?这将节省一些数据库空间。

我不认为这是一个问题,存储随机盐,而不是从用户的其他列派生它们。

但是,如果您决定使用一个或多个其他列来表示盐,则需要100%确定所选择的值永远不会更改。在您的示例中,如果用户更改了电子邮件地址,您就失去了验证其密码的任何方法。

请参阅以下答案,了解为什么您应该为每个密码创建使用随机 salt

盐永远不应该改变。电子邮件地址可以。您认为删除盐列等同于DBA的过早优化,会带来灾难性的后果。