为什么说MD5是不可逆的?

首先科普一下md5在网络安全中的作用,md5的算法原理和为什么不可逆,在回答后半部分

md5主要用于两个场景:

场景一:在数据传输中,保证数据的完整性,以及数据不被篡改

这里并不是为了数据加密,只是用来证明,数据传输中没经过中间人的恶意篡改,放心读取就好。

ipsec vpn中,可以选择使用md5进行完整性验证。

ipsec vpn相关技术

为什么要完整性验证?

老王在兰州拉面馆吃饭,点了一碗拉面,给小二说:多点牛肉,少点葱,辣椒不多不少,汤多一点,盐少一点,面不要太粗不要太细。小二说,还有吗?老王说,没了!小二吆喝了一声,一碗拉面!然后走了,上了一碗普通的拉面。

从这个故事里我们看出:数据从老王发出后,经过店小二传达到厨房,但是中间损失了很多关键信息,不是老王本来的原话。

第二天老王又来这家面馆,讲完同样的需求后,这次,小二上了一碗牛肉粉。

从这个故事里我们看出:数据从老王发出后,经过店小二传达到厨房。但是消息在中间被篡改了,添加了一些原本发件人并没有表达的消息。

所以老王这个时候就需要MD5算法来避免信息被篡改,来保证得到他想要的牛肉面

用了MD5,厨师就会验证,小二传来的话,是不是老王发出的原话。

获得更多技术资料和免费学习视频,加入讨论群:662736393

技术交流,可添加企鹅:167748928

场景二、用来进行密码的加密

在数通项目中,为了安全,经常需要两台互相对接的设备进行身份验证。

比如ospf的邻居路由器之间,vrrp的主备设备之间,需要通过密码来互相验证身份。

但是直接传递密码,密码被中间人截获,这样就不好了。

所以先将密码进行哈希,而md5是一种哈希算法,这样密码就变成了一个随机数,中间人截获报文并不能得到真正的密码。

md5算法原先设计是不可逆的,但因为技术的发展,也可以通过一些方法还原到真实的密码,所以严格意义来讲,选择更好的哈希算法,才能保证更高的安全性。

MD5算法原理

MD5算法是实现数据完整性验证的方法之一,来保证数据的完整性,保证数据在传输中既不丢失,也不会经过篡改。

MD5是一种被广泛使用的密码散列函数。

不少人说很多MD5不够安全,不该广泛应用,这种看法是对的。

但是当前来说,数通项目上确实md5还在广泛应用,而且很多老款软硬件也只支持md5,等级保护也暂时没有废除md5的使用,所以虽说有安全漏洞,但当前很多地方还没有更新哈希算法。

md5的原理是这样:

它以512位分组来处理输入的数据信息,且每一分组又被划分为16个32位子分组,经过了一系列算法的处理后,算法的输出由四个32位分组组成,将这四个32位的分组级联后,就可以产生出128位的固定长度散列值,在得到这个MD5值后,如果想在逆向反推输入的数据就基本不可能了。

看个例子:

两个数字A(343879029802)和B(92387843709)

我们就简单的用A乘以B,一定会得到一个固定的结果C。

但是如果只是给你一个结果C,你知道C是由那几个因式计算出来的结果吗?

我相信你也猜不出来。所以, 只能从一个方向推导结果,不能从结果反过来逆向推导,就叫单向函数不可逆, 即Md5算法不可逆。

更不用说,通过MD5的复杂算法来进行计算以后得到的固定长度值了。

这里的A和B的数字我是随便编的,这个C结果我也没算过,大家暂且忽略,理解原理即可。

MD5可以为任何文件产生一个独一无二的“数字指纹”,如果有任何人对文件进行了改动,那么“数字指纹”(MD5值)也会发生变化。

就比如说刚才两个数字A(343879029802)和B(92387843709),如果把其中任何一个数字修改,得到的结果C也是千差万别,所以利用MD5算法来进行文件完整性的校验成为了一种可信赖的方案。


如果看到了这里,记得关注我@小云晓云,顺手点个赞就更好啦~

更多网络技术公开课,腾讯课堂搜“众元教育”,戳免费公开课,可直接听课哦!

你可能感兴趣的:(为什么说MD5是不可逆的?)