MD5的碰撞?20200807

MD5是一种杂凑算法,主要用来获取信息摘要,防篡改。

首先,杂凑算法在设计时,必须满足两个特性:
1.寻找两个输入,得到相同的输出值在计算上是不可行的,即抗碰撞;
2.寻找一个输出,能得到给定的输入在计算上是不可行的,即不可从结果推导出原文。

其次,杂凑算法的用途决定了,它只要能找到碰撞就足以让它失效,并不需要找到原文。
对于MD5的破解,即找到“碰撞”:
eg:原文A通过MD5可以生成杂凑值M,只需要找到原文B,生成同样的杂凑值M即可,并不需要把X还原成A。
若设MD5的哈希函数是F(X),那么:
F(A) = M
F(B) = M
任意一个B即为破解结果,B有可能等于A,也可能不等于A。

最后,MD5的碰撞方法有:暴力枚举法、字典法、彩虹表法、差分攻击法等。

-暴力枚举法:简单粗暴地枚举出所有原文,并计算出它们的杂凑值,寻找与给定的信息杂凑值一样的;虽然简单,但时间复杂度极高。

-字典法:存储尽可能多的原文和对应的杂凑值,每次用给定的信息杂凑值查找字典,快速找到碰撞的结果。只是生成字典需要巨大的空间,用空间换时间。

-彩虹表法:杂凑函数和衰减函数
衰减函数的定义域是杂凑函数的值域,衰减函数的值域是杂凑函数的定义域,但二者并不互为反函数。(……理解不了,弃之)

你可能感兴趣的:(技术,安全)