哪种哈希算法对密码最安全?

时间:2013-02-10 02:04:36

标签: php security

根据http://php.net/manual/en/function.hash.php,有一个php哈希方法:hash()。它支持以下所有方法,但我想知道,密码散列的绝对最安全的方法是什么。

Results: (in microseconds)
   1.  md4                           5307.912
   2.  md5                           6890.058
   3.  crc32b                        7298.946
   4.  crc32                         7561.922
   5.  sha1                          8886.098
   6.  tiger128,3                    11054.992
   7.  haval192,3                    11132.955
   8.  haval224,3                    11160.135
   9.  tiger160,3                    11162.996
  10.  haval160,3                    11242.151
  11.  haval256,3                    11327.981
  12.  tiger192,3                    11630.058
  13.  haval128,3                    11880.874
  14.  tiger192,4                    14776.945
  15.  tiger128,4                    14871.12
  16.  tiger160,4                    14946.937
  17.  haval160,4                    15661.954
  18.  haval192,4                    15717.029
  19.  haval256,4                    15759.944
  20.  adler32                       15796.184
  21.  haval128,4                    15887.022
  22.  haval224,4                    16047.954
  23.  ripemd256                     16245.126
  24.  haval160,5                    17818.927
  25.  haval128,5                    17887.115
  26.  haval224,5                    18085.002
  27.  haval192,5                    18135.07
  28.  haval256,5                    18678.903
  29.  sha256                        19020.08
  30.  ripemd128                     20671.844
  31.  ripemd160                     21853.923
  32.  ripemd320                     22425.889
  33.  sha384                        45102.119
  34.  sha512                        45655.965
  35.  gost                          57237.148
  36.  whirlpool                     64682.96
  37.  snefru                        80352.783
  38.  md2                           705397.844

2 个答案:

答案 0 :(得分:6)

以上都不是。

你应该use bcrypt

答案 1 :(得分:0)

  

密码哈希的绝对最安全的方法是什么

在问题的前提下回答:绝对最安全的可能是:

  1. 首先使用带有由HSM管理的密钥的HMAC进行Hardware Security Module
  2. 接着哈希with the winner of the Password Hashing Competition,一旦找到胜利者,并且已经有5到10年的时间接触现实世界和同行评审。
  3. 在此之前,最安全的可能是:

    1. 如上所述的HSM和
    2. canonical answer on password hashing
    3. 中的一个不错的选择

      然而,实际上密码散列不是主要问题,只需散列任何一个“好”解决方案就足够了。好的解决方案是:

      1. BCrypt,
      2. PBKDF2,HMAC与SHA256(或512)。
      3. 许多人也认为SCrypt是一个很好的选择,尽管有些人认为它有点年轻。
      4. 对于上述两种情况,你不应该推出自己的作品。您应该始终使用专为长期密码存储而设计的成熟,经过良好测试和审查的库。密码散列不仅仅是关于使用BCrypt或PBKDF2,你想要一个具有合理默认值的合成,用于字符编码,盐,迭代计数/成本因素等。