MD5安全不安全的笑话

(2011-12-28 14:28:17)
基本上谷歌第一页就有足够多的笑话,除了第一条(以及类似的)报道(或者说没漏出破绽更合适),以及讨论MD5值验证证明文件没被篡改的之外,基本上都是。

比如http://zhidao.baidu.com/question/57180284 雷语:现在来说,MD5是非常不安全的~不管它如何升级,但它的基本算法是不变的。(MD5这个算法还能升级啊?没听说过,真孤陋寡闻了。)

比如http://www.cnblogs.com/luminji/archive/2011/05/24/2055021.html 谬论:目前,最通用的做法是多次MD5值法。……在改进过后的方法中,我们首先设计了一个足够复杂的密码hashKey,然后将它的MD5值和用户输入密码的MD5值相加,再求一次MD5值作为返回值。经过这个过程以后,密码的长度够了,复杂度也够了,想要通过穷举法来得到真正的密码值的成本就大大增加了。

比如http://bbs.chinaunix.net/archiver/?tid-2329508.html 标题就够雷的:MD5都已经不安全了,怎么没有被废掉呢?(当然,内容没那么雷,不过也足以表明很多人不知道MD5为什么不安全。欣慰的是,这里面有一个批判回复一眼看就知道是行家。)

比如http://suihr.iteye.com/blog/428470 雷部分摘抄:
那么, 如果你的数据库不小心被暴露, 则恶意分子极可能用上面的方式用md5字符串破解出原始的密码. 从而造成安全漏洞 .
好,这节的知识就是避免这个问题.
1. 注册时:将原始明文密码多次加密,然后存入数据库,如何 ?效果很不错吧?如 $password = md5(md5($password));
2. 用户名和密码混合再md5加密一次如何? $password = md5(md5($password).$username); 效果似乎更不错
3.用固定加密KEY, 来二次加密,如何 ?
$KEY = ‘fjasdklfjfmslakfmdklsajfl72389749823′;
$password = md5($password.$KEY);
效果似乎更好了.
为什么要使用这些方式 ?更安全,用上面的任一方法生成md5串, 被暴力破解的可能性基本上是0,绝对不用担心被暴库造成密码被破解.
要知道的一点就是: ucenter ,discuz, phpcms, ecshop 几乎无一例外地使用了上述之一的方式.

上面这里有一个步骤“用户名和密码混合再MD5”,这貌似是加盐,但是实际上有一个问题,那就是万一用户改用户名了怎么办?于是只有这么几种可能:
  • 用户名不让改;或者
  • 改用户名的时候需要重设密码;或者
  • 改用户名就登录不了,活该;或者
  • 算了,偷偷地忽略步骤2。
除了步骤2之外的其它步骤,对于安全性提升的贡献几乎为0,而步骤2却有应用缺陷。所以…… 

好吧,微博上的我就不收集了。
::...
免责声明:
当前网页内容, 由 大妈 ZoomQuiet 使用工具: ScrapBook :: Firefox Extension 人工从互联网中收集并分享;
内容版权归原作者所有;
本人对内容的有效性/合法性不承担任何强制性责任.
若有不妥, 欢迎评注提醒:

或是邮件反馈可也:
askdama[AT]googlegroups.com


订阅 substack 体验古早写作:


点击注册~> 获得 100$ 体验券: DigitalOcean Referral Badge

关注公众号, 持续获得相关各种嗯哼:
zoomquiet


自怼圈/年度番新

DU22.4
关于 ~ DebugUself with DAMA ;-)
粤ICP备18025058号-1
公安备案号: 44049002000656 ...::