【发布时间】:2013-12-09 12:12:29
【问题描述】:
好的,我不知道以前是否有人问过这个问题,但是有很多消息来源表明不建议使用 MD5 对敏感数据(例如密码)进行散列处理。但是没有人对他们将使用什么其他散列函数给出任何建议或指示。你所看到的,包括在这个网站上的,都是人们大喊大叫,第四,它是安全的还是不安全的。
众所周知,维基百科说:
“在 1996 年,MD5 的设计中发现了一个缺陷。虽然它不是 显然是致命的弱点,密码学家开始推荐使用 其他算法,例如 SHA-1,后来被发现是 也很脆弱。”
这是被那些告诉你不要使用 md5 或 sha1 的人引用的,但他们不想让其他人知道你应该考虑哪些其他替代方案。
当然,我们不要忘记,您设计应用程序的方式、存储密钥的位置、谁可以访问什么、使用盐等也非常重要。
当然要验证和验证所有数据,不要为 SQL 注入留下任何后门,XSS 漏洞是关键。但据我所知,md5 很容易被“蛮力”或“脱盐”。我不是安全专家,这就是我问的原因,所以我和任何像我一样有经验的人都可以用更简单的术语来理解。
这就是我目前正在做的事情,但也许有人可以给我利弊:
$hash = hash('sha256', $salt . hash('sha256', $_POST['pass']) );
我希望我的问题没有出格,我知道有很多关于此的文章和页面,但我只是没有找到任何答案,我相信其他人也想知道。
【问题讨论】:
-
每当你将散列描述为加密时,一只无辜的小兔子就会死去。
-
我的第一个想法是 sha 256 / sha 512 / etc.. 还要考虑动态盐(例如用户名的子字符串或其他东西)。这样每个人的盐就不同了。
标签: php encryption hash md5 sha