使用有什么好处:
sha1($long_unpredictable_randomly_generated_salt.$password.$global_salt)
结束
sha1(sha1($username).$password.$global_salt)
唯一的盐显然存储在数据库中,而全局盐位于服务器上的配置文件中。
我知道salt的purpsoe只是唯一的,并且防止预先计算的哈希表..所以我认为没有理由sha1($username)
生成的长哈希不够好......但是因为安全性是非常重要的是,我想我会向那些可能更了解的人提出有关信息的建议: - )
答案 0 :(得分:4)
缺点是用户名大多是已知的,所以当有人知道你编写的这个“公式”时,他只能计算sha1(user_to_hack)
,这部分将没有任何额外的好处。事实上,如果您在这种情况下使用sha1(username)
或username
,则无关紧要。
在另一种情况下,你使用的是一个未暴露的值,所以即使有人知道你的公式(现在每个人都知道),在任何使用之前,他仍然需要那种独特盐的价值。他们,所以他们需要到你的数据库。我假设你为每个用户组成了一个独特的盐?
你可能还需要获取数据,所以独特的盐也可能更快,因为你不需要计算用户名的哈希值。
但无论如何,两者都非常安全,但只有你能很好地实现实际的登录程序。我不担心现在使用哪一个。