Php 哪个哈希算法对密码最安全?
据介绍,有一种php哈希方法:hash。它支持以下所有方法,但我想知道,什么是绝对最安全的密码哈希方法Php 哪个哈希算法对密码最安全?,php,security,Php,Security,据介绍,有一种php哈希方法:hash。它支持以下所有方法,但我想知道,什么是绝对最安全的密码哈希方法 Results: (in microseconds) 1. md4 5307.912 2. md5 6890.058 3. crc32b 7298.946 4. crc32
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
以上都没有。
你应该这样做。以上都不需要。
你应该
什么是绝对最安全的密码哈希方法
回答这个问题的前提是:绝对最安全的可能包括:
首先,使用HMAC和HSM管理的密钥,
然后是散列,一旦找到了获胜者,并且在现实世界和同行评议中暴露了5-10年。
在此之前,最安全的可能是:
如上所述的HSM,以及
这是一个很好的选择。
然而,实际上密码散列并不是主要问题,仅仅用任何一种“好”的解决方案进行散列就足够了。好的解决办法是:
BCrypt,
PBKDF2和HMAC以及SHA256或512。
许多人也认为ScRyPt是一个强有力的选择,尽管有些人认为它很幼稚。
对于以上两种情况,你不应该滚动你自己的作文。您应该始终使用一个成熟、经过良好测试和审查的库,用于长期密码存储。密码散列不仅仅是关于使用BCrypt或PBKDF2,您还需要一个组合,其中包含字符编码、salt、迭代计数/成本因子等的合理默认值
什么是绝对最安全的密码哈希方法
回答这个问题的前提是:绝对最安全的可能包括:
首先,使用HMAC和HSM管理的密钥,
然后是散列,一旦找到了获胜者,并且在现实世界和同行评议中暴露了5-10年。
在此之前,最安全的可能是:
如上所述的HSM,以及
这是一个很好的选择。
然而,实际上密码散列并不是主要问题,仅仅用任何一种“好”的解决方案进行散列就足够了。好的解决办法是:
BCrypt,
PBKDF2和HMAC以及SHA256或512。
许多人也认为ScRyPt是一个强有力的选择,尽管有些人认为它很幼稚。
对于以上两种情况,你不应该滚动你自己的作文。您应该始终使用一个成熟、经过良好测试和审查的库,用于长期密码存储。密码散列不仅仅是关于使用BCrypt或PBKDF2,您还需要一个具有字符编码、salt、迭代计数/成本因子等合理默认值的组合。如果我是正确的,它只是一个包含文件?@user2058041:听起来不错。我不使用PHP,所以我不确定+1,尽管有其他选择,如PHP绑定上的scrypt不确定,但考虑到scrypt根本不能防止字典攻击,而且对于暴力强制,大部分取决于密码强度。。当您计算破解bcrypt哈希所需的时间时,您假设密码很长且完全随机,而大多数情况下并非如此。用户通常会创建糟糕的密码,并且使用字典结合暴力强制并不需要很长时间。如果我是正确的,那么这只是一个包含文件?@user2058041:听起来不错。我不使用PHP,所以我不确定+1,尽管有其他选择,如PHP绑定上的scrypt不确定,但考虑到scrypt根本不能防止字典攻击,而且对于暴力强制,大部分取决于密码强度。。当您计算破解bcrypt哈希所需的时间时,您假设密码很长且完全随机,而大多数情况下并非如此。用户通常会创建糟糕的密码,而使用字典结合暴力破解根本不需要很长时间。上述所有密码的根本问题在于,它们是为了快速而设计的,或者更确切地说,不是为了其他目的而设计的。对于密码等,哈希函数在计算上应该相对昂贵,并且不可并行化。我建议不要编写自己的密码库;这很难做到正确,这只是提示。上述所有密码的根本问题是它们设计得很快,或者更确切地说,不是以其他方式设计的。对于密码等,哈希函数在计算上应该相对昂贵,并且不可并行化。我建议不要编写自己的密码库;很难做到正确,这只是提示。