对使用所有hash_algos
的速度和工作效率以及安全性感到好奇Array
(
[0] => md2
[1] => md4
[2] => md5
[3] => sha1
[4] => sha224
[5] => sha256
[6] => sha384
[7] => sha512
[8] => ripemd128
[9] => ripemd160
[10] => ripemd256
[11] => ripemd320
[12] => whirlpool
[13] => tiger128,3
[14] => tiger160,3
[15] => tiger192,3
[16] => tiger128,4
[17] => tiger160,4
[18] => tiger192,4
[19] => snefru
[20] => snefru256
[21] => gost
[22] => adler32
[23] => crc32
[24] => crc32b
[25] => salsa10
[26] => salsa20
[27] => haval128,3
[28] => haval160,3
[29] => haval192,3
[30] => haval224,3
[31] => haval256,3
[32] => haval128,4
[33] => haval160,4
[34] => haval192,4
[35] => haval224,4
[36] => haval256,4
[37] => haval128,5
[38] => haval160,5
[39] => haval192,5
[40] => haval224,5
[41] => haval256,5
)
显然这可能是一种矫枉过正,但严格来说,从一个奇思妙想和奇迹将循环这些方法与我们的密码和盐,然后使用我们的返回说md5
是我们的最后算法作为商店运行。破解密码需要多长时间?正如我已阅读一些文档with a password 8 or less characters in length it takes only 6 hours to crack
所以参考我们对密码的规定和规定是
一个大写字母 两个数字 并且长度不少于10个字符
然后在hash_algs中循环我们的密码本质上我们的密码几乎是不可破解的,虽然我不应该使用它,因为这些天的所有东西都可以破解。
所以我的担忧是可行的 是否会有很重的页面加载 对此类密码强度的规定更强 这真的是矫枉过正还是像堡垒安全?
答案 0 :(得分:1)
使用所有算法是完全矫枉过正的。如果我是你,只需为每个用户生成一个随机盐(可能是通过MD5哈希uniqid,只是一个例子),并用所述盐哈希密码。 Blowfish加密对您来说非常有用。
答案 1 :(得分:1)
混合所有哈希函数并不是一个好主意,因为它们仍然太快而且您不知道它们是否相互影响。
适当的密码哈希函数应该慢(需要一些计算时间)。如果攻击者试图破解密码,并且正确处理了散列,那么对他来说唯一的方法就是强制执行,通常与字典结合使用。
这意味着,他每秒可以尝试的密码越多,他找到原始密码的速度就越快。今天,您可以使用通用硬件计算8 Giga MD5 hashes per second。
有像BCrypt和PBKDF2这样的算法有成本因素,你可以使用PHP函数password_hash()来生成BCrypt哈希。成本因子定义了散列函数的迭代次数,因此您可以控制一次尝试计算所需的时间。获得访问您网站的毫秒数并不多,蛮力毫秒就是一个限制因素。通过您的哈希链接,您仍然只有40个快速计算。
如果您对有关密码存储的更多信息感兴趣,可以查看我的tutorial安全密码存储。