我知道有十几个关于这方面的问题。但是我想知道是用sha1,sha512等散列方法加密登录系统的密码会更好,还是使用Mcrypt密码更好?
我知道在使用像sha这样的散列方法加密后再解密是不可能的,如果使用mcrypt进行加密,这是可能的。但使用mcrypt是否安全,因为您也可以解密?
发布于 2012-02-05 21:01:33
Passwords must not be recoverable。散列它们的目的是确保如果数据库遭到破坏,攻击者无法访问每个密码,从而无法访问每个用户的帐户(以及密码已被重复使用的其他服务上的每个帐户)。
发布于 2012-02-05 21:02:00
对于以后不需要明文密码的密码存储,您应该始终使用哈希函数。通过这种方式,您可以检查密码,但潜在攻击者无法找到明文密码(当用户始终使用相同的密码时,这一点很重要)
发布于 2012-02-05 21:13:46
密码不得恢复。因此,您需要使用散列算法。最受欢迎的是MD5和SHA1。我不建议使用MD5,因为它很容易受到攻击,而且有许多预先生成的哈希。SHA1更好,但它也有一些。最安全的是基于this的SHA256/SHA512 ( SHA2系列的一部分)。不过,SHA2家族的问题在于它在很大程度上是基于SHA1的。它还没有被打破,但它很快就会被打破。如果您有时间,可以移植为SHA3竞赛设计的算法之一或不太知名的算法。如果你能安装扩展,那么SHA3的竞争者已经有了扩展。
安全级别的一个很好的表是在Wikipedia。如果你已经选择了,你应该搜索"collision attack on algorithm“和[preimage attack on algorithm]来看看是否有攻击(维基百科可能已经过时了)。
另外,别忘了加盐。这意味着您可以用“Whatever”代替$string来散列$string+。
https://stackoverflow.com/questions/9149422
复制相似问题