MD5即Message-Digest Algorithm 5(信息-摘要算法 5),是在计算机语言当中普遍使用的一种杂凑程序,由于它类似于函数,我们称为算法。此杂凑函数是由MD2、MD3和MD4完善而来。其基本原理就是将一个字符串(包括汉字等)通过一定的函数转换为一种新的字符串,并且这种杂凑运算是以不可逆转的形式存在。在1992年8月Ronald L. Rivest在向IEFT提交了一份重要文件,描述了这种算法的原理,由于这种算法的公开性和安全性,在90年代被广泛使用在各种程序语言中,用以确保资料传递无误等。
由于MD5算法的可靠性,被广泛用于杂凑资料正确性验证。经过许多程序员的努力,MD5算法已经被各种语言实现,.asp,.php,.java ,c,c#,vb,vc++,delphi等语言。
MD5算法以16个32位子分组即512位分组来提供数据杂凑,经过程序流程,生成四个32位数据,最后联合起来成为一个128位散列。基本方式为,求余、取余、调整长度、与链接变量进行循环运算。得出结果。
MD5由MD4、MD3、MD2改进而来,主要是增加了算法难度和不可逆性。
虽然目前对MD5算法本身还没有已知或已公布的攻击方法,但是由于它是一种比较老的算法,使用MD5计算出的的散列值长度只有128位,随着现代计算机运算能力的提高,通过一些方式,寻找一个可能的“碰撞”(冲突)已经变得可能。因此,MD5在一些对安全要求比较高的场合已经逐步被其它的算法所替代。
由于MD5使用的广泛性和可靠性,诸多程序员对其进行了大量的研究,并取得了一些成果,但是并未改变MD5算法的可逆性,没有完整的反MD5函数出现。
阅读(1543) | 评论(0) | 转发(0) |