1

根据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
4

2 回答 2

6

以上都不是。

你应该使用 bcrypt

于 2013-02-10T02:08:24.860 回答
0

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

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

  1. 首先是硬件安全模块,使用 HMAC 和 HSM 管理的密钥,
  2. 然后与密码散列竞赛的获胜者进行散列,一旦找到获胜者,并且已经有 5-10 年的时间接触现实世界和同行评审。

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

  1. 如上所述的 HSM,以及
  2. 密码散列的规范答案中的一个不错的选择。

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

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

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

于 2013-12-09T19:13:47.000 回答