警告不要对密码使用MD5,使用类似bcrypt的替代方法
对于我的密码,我应该像这样使用salt ( salt对每个用户都是唯一的,而不是直接与密码一起存储).
$salt = sha1(md5("coders gonna code"));
$password = md5($salt.$password);或者我可以用:
$password = md5($password);因为如果我使用salt,即使用户提供了一个错误的密码,比如密码,也不重要,因为salt (在本例中)将是145ac26ff093c6e1317f7d5fb4c9fd11c77be975,所以密码的条目是145ac26ff093c6e1317f7d5fb4c9fd11c77be975password,根据http://howsecureismypassword.net/的说法,破解密码需要3个十亿万年.那么意见呢?或者我应该更糟然后去
$password = md5($salt.$password.md5($salt));如果这个人已经做了足够多的事,得到了盐散列,还有什么能阻止他继续前进吗?<这是最后一个密码。
对每个用户都说我应该这么做的人。我知道这只是个例子。
发布于 2012-10-04 10:10:00
你完全不正确地使用盐。盐应该是不可预测的,你的盐和它完全相反。由于固定的散列绝对没有好处,所以您似乎还指望攻击者所不知道的盐分。这是通过默默无闻来确定安全的定义,这是另一种糟糕的做法。
你应该做的是:
bcrypt是最好的,因为它有一个可配置的负载因子。发布于 2012-10-04 10:12:07
MD5作为您的散列算法,使用一些更安全的方法,例如SHA256甚至bcrypt。http://michaelwright.me/php-password-storage
http://en.wikipedia.org/wiki/Bcrypt
发布于 2012-10-04 10:14:18
首先,您不应该直接存储md5,因为您已经对其进行了重新定义。PHP5.5将带来新的方法,可以轻松地在一行中创建和验证密码,在此之前,您可以使用compat (向前兼容)生成和验证安全密码散列。
https://stackoverflow.com/questions/12724935
复制相似问题