2011年的PHP密码散列

| 在花了几个小时浏览SO上的许多帖子之后,我提出了这一点,内容涉及最安全的PHP / MySQL密码处理方式。大多数答案似乎都是过时的,人们指向的链接也是如此。许多人推荐md5和sha-1。 我们都知道MD5和SHA-1不再值得使用,因为它们已经被反转了,而且还因为那里有许多数据库已经建立了数百万个md5 / sha1字符串。现在,显然您可以用盐来解决这个问题,我打算这样做。 但是,我最近开始玩漩涡,它似乎更安全,并且是最新的。我认为漩涡+盐对密码有足够的保护是否正确? 我实际上正在考虑这样的事情:
<?php
    $static_salt = \'some_static_salt_string_hard_coded\';
    $password = \'some_password_here\';
    $salt = \'unique_salt_generated_here\';

    $encoded = hash(\'whirlpool\', $static_salt.$password.$salt);
?>
你怎么看?矫kill过正还是明智?     
已邀请:
        这样就足够了(但是,静态硬编码盐没有意义)。而且,为什么不使用SHA256?漩涡浴很少使用。     
        对于大多数应用程序来说这可能已经足够了。 但是,如果数据库泄漏,则盐几乎(几乎)无用-如果配置文件也泄漏,则盐包括静态盐。它们是防止彩虹表的好方法,但是如今,使用一堆GPU暴力破解给定的哈希值变得更加容易。 恕我直言,目前最好的解决方案是使用bcrypt。 PHP 5.3+显然支持该功能,下面是使用它的示例。     
        在没有更广泛地考虑威胁模型和实现细节的情况下,讨论特定算法的优点特别没有意义。 是的,就漩涡作为散列的有效性而言,漩涡似乎确实具有一些优势,但正如尼克劳伊所说,这可能具有欺骗性,并且由于它的使用范围较广。但是也有其他注意事项-对于某些目的,为每个帐户存储128个字符串可能是不必要的开销。对于每个人来说,这都是软件支持什么的问题(有些人可能希望使用相同的帐户记录来控制对不同系统的访问)。 归根结底,哈希算法的复杂程度无关紧要: 用户可以自由选择不正确的可猜密码 用户将为不同的服务使用相同的密码 如果它适合您-那很好-但是没有通用的解决方案。     

要回复问题请先登录注册