MD5真的安全吗?

原创文章,尊重作者。转载注明出处http://blog.csdn.net/g000321/article/details/75093316 作者:androidRy


为什么写这篇

  • 最近看到公司的项目有很多安全问题,所以就相应的寻找一些解决办法,其中有一块涉及到MD5的,就去简单了解了一下MD5。今天跟其他朋友谈论安全问题又提到了MD5,所以就我了解的东西写一篇MD5相关的文章,也许大家仔细想都能想到问题的存在,知识在很多时候大家都会忽略这个问题,但其实很重要。我不是专业的破解专家,我只是在工作中发现某些问题,试图寻找解决办法,如果有哪说的不对或疏忽,还请指正见谅。

MD5的前世今生

-先了解一个概念《什么是散列,什么是Hash》
(百度解释)
其实散列和Hash是一个东西(下文称Hash),只是一个中国名一个英文名。就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
(我的理解)
类似于我们小时候做的应用题,最后的答案往往是一个简洁的数字,不同的应用题一般会对应不同答案,但是也可能会对应相同答案,拿着答案不能推断出原题。所以说Hash是“单项”操作,就算泄漏也很难得到原数据,因此也较为安全。

  • MD5(1991年)之前有两个版本MD2(1989年),MD4(1990年),MD5能从1991年用到今天安全性可想而知。

  • MD5和SHA-1是目前应用最广的Hash算法(也叫散列算法),MD是Message Digest的简写。

MD5应用场景

  • MD5经常用在密码加密和校验。通常情况下客户端拿到原密码进行MD5加密,然后进行存储或者校验。
  • 我发现很多数据库存储的密码都是经过MD5加密的,包括今天作者(androidRy)发现Android版的本地微信数据库(里面存放着你的好友列表聊天记录等信息)的密码也使用了MD5加密。

MD5为什么安全?

  • MD5也是Hash算法,特殊之处就在于“题”与“答案”一一对应,所以就有了特殊的用处,我们经常通过MD5验证“身份” ,就像你拿到“答案”也不知道“原题”就是什么样子一样。

MD5为什么不安全?

别人通过那些途径能获取到我的MD5?
网络数据库泄漏事件时有发生
  • 2013年京东安全漏洞12G的数据泄漏
  • 济南20玩1-5岁孩童信息被出售
  • 600多万大麦网用户账号密码泄漏
  • 雅虎被黑10亿用户数据泄露
  • 。。。。。。
免费wifi带来的安全隐患
  • 不法分子利用免费wifi截取用户信息
登录http协议的网站
  • 目前还有很多网站还在使用较老的http协议,容易被劫持,发生信息泄漏。
他拿到我的MD5又不能直接使用,那有什么可担心的?
  • MD5可通过暴力破解(跑字典)的方法进行破解
  • 网上已经有人在做收集原数据与MD5对应的数据且开发成数据库,一般不太复杂的密码直接可在数据库中找到对应的原密码

所以说MD5密码也就没有那么安全了,当然,如果你的密码足够复杂的话也是够安全的,但是作为开发中,你不能保证所有的用户密码都足够复杂。

做为开发者我们要如何做更安全?

*控制MD5泄漏渠道(这个涉及的范围就大了,本篇不作详解)

  • 对MD5数据再次进行其他加密操作,即使是最简单的操作,因为对于一般破解者来说进行一个小众或自制的加密算法,往往需要靠自己手动解密,网上很难找到现成的解决办法。对于解密高手来说小众或自制的加密算法几乎没什么用处(解密方法一般会用密码分析:统计分析法,频度分析法,模式分析法,kasiski测试法,重合指数法等方法破解)。如果你有更好的方法,欢迎提出来!

END

转载自http://blog.csdn.net/g000321/article/details/75093316 作者:androidRy

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值