1
3
如果你打算随机存储每个用户的盐,这并不重要。 将salt+hash存储在一列中,或将salt和hash存储在两列中。 就我个人而言,我会将它存储为一个列,因为您不太可能只检索salt或hash。 另外,如果您更新salt,那么hash也需要更新,在更新hash时,您也可以更新salt。从密码学的观点来看,两种存储方法都同样有效。 衍生盐 以username为例,将它传递给PBKDF2的1000多个迭代(实际上选择一个唯一且不寻常的迭代次数更好——比如2137)。这将需要攻击者访问 不仅是数据库,还有你的源代码 来打败这个系统。 现在,如果攻击者可以完全访问密码表和源代码,则无法获得安全性;但是,如果攻击者只能访问数据库(有限的入侵),则您已停止攻击或至少使攻击变得更加困难。
|
2
1
我认为第一个答案的第二部分(关于“动态salt”的部分)给出了一个与您期望的一样的答案:生成一个随机的、每个用户的salt并用散列密码存储它。这正是UNIX passwd(以及后来的shadow)文件几十年来所做的事情。 盐 http://en.wikipedia.org/wiki/CRAM-MD5 这就避免了用户通过网络发送他们的密码,让他们用服务器指定的“salt”散列它。 |
3
1
安全的答案是,这无关紧要。 数据库的答案是salt和hash是不同的数量,因此理想情况下应该将它们存储在不同的列中。如果你这样做,那么数据库可以说是 . 然而,这种情况并不少见 提高访问速度的数据库-将哈希和salt连接到同一列将是非规范化的一个例子。 把盐和杂碎分开的一个原因是你打算寻找其中的一个或另一个。在我看来,这不太可能是你想做的事情,所以继续把它们串联起来存储。 |
jsc · Powershell创建密码过期报告 6 年前 |
Emp1 · 密码-登录不工作Python 6 年前 |
Anmol Dua · 使用django身份验证重置密码 6 年前 |
Norgul · Laravel密码代理外观 6 年前 |