田鑫官网全国服务热线:400-613-6156

当前位置:首页 > 企业组网 > SD-WAN

广域网加速技术数据压缩,MD5 算法

广域网的应用现已渗透到生活的方方面面。关于广域网加速技术也成为研究的热点,其中主流的方法主要可以分为两大类:数据压缩和传输协议优化。

下面介绍一些常见的数据压缩算法,MD5 算法。

MD5(Message-Digest Algorithm 5)是计算机科学里常用的一种算法,具有压缩长度固定、抗修改性很好的特点,且非常容易计算。MD5 哈希值就像是人的指纹一样,每个文件的 MD5 值是独一无二的,稍有改动,其 MD5 值就会发生变化,所以 MD5 算法常用来保护数据消息的完整性。
 

MD5 算法的简要过程如下:MD5 算法以 512 位的分组来处理输入的信息,然后又将每个 512 位的分组均分成数个 32 的子分组,再经过一系列的数据处理流程后,产生 128 位的哈希值即为最终的 MD5 值。

因为输入的数据位数可能不满足条件,所以第一步要对输入信息进行填充,需要在消息的后面填充一个 1 和若干个 0,使得信息的位长满足 N*512+448(其中 N 为 0 或者正整数)为止;接着再在这个结果后面添加上一个 64 位的二进制数,该数表示原信息的长度,取低 64 位即可,这样最后得到的信息位长是 512 的整数倍;定义四个 16 进制参数 A、B、C、D,在程序中的值分别为 A=0x67452301,B=0xEFCDAB89,C=0x98BADCFE,D=0x10325476;以下 4 个函数是后续步骤将要用到的,其中的“&”、 “|”、“~”、“^”分别是与、或、非、异或操作符; 

(1)F( X ,Y ,Z ) = ( X & Y ) | ( (~X) & Z ) 
(2)G( X ,Y ,Z ) = ( X & Z ) | ( Y & (~Z) ) 
(3)H( X ,Y ,Z ) =X ^ Y ^ Z 
(4)I( X ,Y ,Z ) =Y ^ ( X | (~Z) )

又假设 Mj 的含义是输入消息的第 j 个子分组,常数 ti 的值为 2 的 32 次方乘以 abs( sin(i) )的整数部分,i 可以取 1 到 64 的任意整数,“<<”表示循环左移,定义如下表达式: 

(1)FF(a ,b ,c ,d ,Mj ,s ,ti ) 操作为 a = b + ( (a + F(b,c,d) + Mj + ti) << s) 
(2)GG(a ,b ,c ,d ,Mj ,s ,ti ) 操作为 a = b + ( (a + G(b,c,d) + Mj + ti) << s) 
(3)HH(a ,b ,c ,d ,Mj ,s ,ti) 操作为 a = b + ( (a + H(b,c,d) + Mj + ti) << s)
(4)II(a ,b ,c ,d ,Mj ,s ,ti) 操作为 a = b + ( (a + I(b,c,d) + Mj + ti) << s) 

接着一共进行四轮操作,每轮进行 16 次函数运算,将每次得到的结果左随机的位数,并将结果与前面未用到的分组相加,并赋值给 a,b,c,d,将最后一轮计算结果再加上 A,B,C,D 并级联就得到了输入信息的 MD5 指纹值了。
 

田鑫,专业的企业组网服务商,致力于为企业提供企业组网(SD-WAN、MPLS、云互联),业务云化、数据中心、网络安全、行业IT解决方案等相关服务。

猜你喜欢

微信公众号