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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (95)

根据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
提问于
用户回答回答于
用户回答回答于

什么是密码散列的绝对最安全的方法

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

  1. 首先是硬件安全模块,使用带有由HSM管理的密钥的HMAC,
  2. 接下来是密码哈希竞赛的获胜者,一旦找到胜利者,并且已经有5到10年的时间接触现实世界和同行评审。

在那之前,最安全的可能是:

  1. 如上所述的HSM,和
  2. 密码散列规范答案中的一个很好的选择。

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

  1. BCrypt,
  2. PBKDF2与HMAC与SHA256(或512)。
  3. 很多人也认为SCrypt是一个很好的选择,尽管有些人认为它有点年轻。

对于上述两种情况,你不应该自己动手组成。您应该始终使用专为长期密码存储而设计的成熟,经过良好测试和审查的库。密码散列不仅仅是关于使用BCrypt或PBKDF2,你想要一个具有合理默认值的合成,用于字符编码,salt,迭代计数/成本因素等。

扫码关注云+社区

领取腾讯云代金券