基于MD5的迭代冗余加密算法是对MD5加密算法进行了扩展,利用了MD5加密算法的强大安全性,实现了文件加密、解密和数据完整性保护的功能。

一、基于MD5的迭代冗余加密算法加密原理

1、初始化

首先在口令后面附加当前的时间戳,产生一个字符串S。计算S的MD5摘要,取其摘要的前6位得到cur0。接着进行256次循环运算,第i次循环在S后面附加值为i-1字符,计算处理后的S的MD5摘要,存入表map中。这样,表map就是一个MD5摘要的集合,其中有256个摘要。

2、迭代加密

顺序读取原文件的内容,每次读1个字符,这里用Ci表示第i次读取的字符值,很明显0≤Ci<256。令k为curi-1的第6个字符的值,取表map中第Ci个MD5摘要,对该摘要循环左移kmod32位,取其结果的前6位为curi,最后对curi-1和curi进行逐位相加,结果为6位密文Ei,将Ei写入加密文件末尾。

二、基于MD5的迭代冗余加密算法解密原理

1、初始化

与加密算法类似,首先在口令后面附加当前的时间戳,产生一个字符串S。计算S的MD5摘要,取其摘要的前6位得到E0。接着进行256次循环运算,第i次循环在S后面附加值为i-1字符,计算处理后的S的MD5摘要,存入表map中。

2、迭代解密

顺序读取加密文件的内容,每次读6个字符,这里用Ei表示第i次读取的字符串。对Ei-1和Ei进行逐位相减,结果为6位密文curi。依次取表map中的256个MD5摘要,令第j次取的摘要为DMj。令k为curi-1的第6个字符的值,对摘要DMj循环左移kmod32位,取其结果的前6位为cmpj。对比curi和cmpj,如果两者相同则将值为j的字符写入解密文件末尾,否则取下一个MD5摘要继续对比。解密操作完毕后,对解密文件计算MD5摘要,并与随加密文件一起传输的原文件MD5摘要进行对比。如果两个摘要相同则解密成功;否则解密失败,解密的文件是不完整的。

三、基于MD5的迭代冗余加密算法对文件加密的特点

①可以对大文件进行加密解密,加密后产生信息冗余,文件容量变大;

②没有解密算法,对文件的解密只能依靠指定的惟一密码表;

③加密文件内容的任何微小变化都对解密结果产生很大影响;

④加密结果掩盖了MD5算法的特征,提高安全性;

⑤加密文件实际上是一组MD5摘要的集合;

⑥加密文件内容环环相扣,前后密文联系紧密;

⑦充分利用了MD5算法的单向性、离散性和强大的安全性;

⑧速度较快,在实际应用中可行。

基于MD5的迭代冗余加密算法对文件进行冗余加密,隐藏了原文件的任何细节,掩盖了MD5加密算法的特征,并且其破解难度是很大的,在实际应用中是可行的。

小知识之MD5加密算法

MD5就是采用单向加密的加密算法,对于MD5而言,有两个特性是很重要的,第一是任意两段明文数据,加密以后的密文不能是相同的;第二是任意一段明文数据,经过加密以后,其结果必须永远是不变的。前者的意思是不可能有任意两段明文加密以后得到相同的密文,后者的意思是如果我们加密特定的数据,得到的密文一定是相同的。