APP下载

一种改进的MD5加密算法及应用

2018-11-03徐跃吴晓刚

现代计算机 2018年28期
关键词:加密算法解密密钥

徐跃,吴晓刚

(兴义民族师范学院,兴义 562400)

0 引言

随着大数据与“互联网+”的迅猛发展,网络安全对生活产生了越来越深的影响。如在日常生活中如何保证自己的个人信息安全,如何提高计算机网络的安全性,保护网站及其数据库的安全,防止信息被窃取或者授权给非法用户等,这些都表明网络信息安全显得尤为重要。

2004年王小云教授公布了MD5算法的破解结果[1],让人们认识到了MD5算法的安全问题。而MD5单向函数算法的便捷性使得它在生活中仍然有广泛的应用背景,特别是在网站帐号口令的加密中,如何使MD5在应用过程中更加安全可靠,引发了人们对该密码算法安全性的思考。

针对MD5加密算法在目前PHP网站开发中的应用,我们对MD5算法进行作了一个改进的应用,有效地提高其安全性,并运用网站上公开的解密工具作了攻击对比实验。

1 MD5加密算法的原理

MD5算法是一种用来处理消息的算法,其加密原理如下所示:

MD5算法简述可以为MD5以512位分组来处理信息[1],一个字符的长度是8位,即一个字节的长度。MD5算法就是将需要加密的信息分割成很多个分组,每个分组为512位,不足512位的X部分先填充一个1,再接无数个0,直到补足512位。加密过程如下[1]:

(1)填充:输入的信息每一个分组为512位,如果分组小于512位,则需要进行填充。填充的方法是填充一个1和n个0。填充完后,信息的每组长度就为512 位(bit)。

(2)初始化变量:对变量进行初始化,它们分别为:M=0x23456789,N=0x89FEDCBA,O=0xABCDEF98,P=0x01234567。这些变量用于第一轮的运算。

(3)分组处理数据:每一分组的算法流程如下:

第一分组将上面四个变量复制到另外四个变量中:M到m,N到n,O到o,P到p。其中第二分组变量为上一分组的计算得到的结果,即M=m,N=n,O=o,P=p。

第一轮进行16次运算。每次操作对m、n、o和p中的其中三个作一次非线性函数运算,然后将所得结果加上第四个变量。再将所得结果向左移一个不定的数,并加上m、n、o或p中之一。最后用该结果取代m、n、p或q中之一。

下面是每次运算用的非线性函数(每轮一个)。

Y1(M,N,P)=(M&N)|((~M)&P)

Y2(M,N,P)=(M&P)|(M&(~P))

Y3(M,N,P)=M^N^P

Y4(M,N,P)=M^(N|(~P)

Y1是一个逐位运算的函数。

(4)输出:

输出是a、b、c和d的级联的一组散列值。

2 改进MD5算法

(1)改进的MD5算法原理

以下算法采用对原有的MD5算法的散列值进行加密处理,从而增加了变换次数和密钥空间,提高了加密的强度。图1给出了加密算法的实现原理。

图1 MD5算法改进过程加密算法

(2)加密的具体步骤:

①输入需要进行加密的信息,使用MD5进行加密,得到MD5算法产生的信息摘要。

②对获得的信息摘要进行处理,从第四位开始截取12个字符。

③自己给定一个12个字符的字符串(包含字母、数字、特殊符号)。

④使用给定的字符串去替换原信息摘要中的从第四位开始的12个字符。

⑤解密,即加密的逆过程。但必须知道产生的随机12个字符。

3 PHP网站加密实现及安全性分析

根据上述算法给出一个在PHP网站中的应用实例。

采用PHP对帐号口令加密的实现算法:

<?php

$pswd1=md5("123");//对 ”123”进 行 MD5 算 法加密

$pswd2=substr($pswd1,4,12);[1]//截取字符串,用于存储和替换

$pwd=”emnqvwADLO37”;//给定的字符串

$pswd3=str_replace($pswd2,$pwd,$pswd1);//字符串替换,产生新的信息摘要

echo"使用改进后md5加密后的密文:";

echo$pswd3;//改进后新的MD5算法产生新的信息摘要

?>

实验过程对比如下:

图2 口令信息“123”的MD5加密结果

图3 对口令信息摘要作MD5解密

图4 改进的MD5算法对信息“123”加密

图5 使用MD5解密工具破解密码无效

实验结果分析:

(1)统计特性分析

由以上可知,图2对消息“123”进行普通的MD5算法进行加密,得到一个信息摘要为“202cb962ac 59075b964b07152d234b70”,图3可以对普通MD5加密后的信息摘要“202cb962ac59075b964b07152d234 b70”进行解密,解密出来与加密的消息一样为“123”。图4使用PHP程序加密后产生的新的信息摘要“202cemnqvwADLO37964b07152d234b70”,图 5使用MD5解密工具无法对改进算法产生的信息摘要“202cemnqvwADLO37964b07152d234b70”进行解密,提高了MD5算法在应用中的安全性和可靠性。

(2)密钥空间分析

原算法消息摘要密钥空间采用32位的16进制数字来表示,密钥空间为16^32。改进的算法加密后的密钥空间含有字母、数字、特殊符号,例如“#”、“@”符号等,其密钥空间从第四个字符到第16个字符为64^12,增大了密钥空间,相对提高了安全性。

4 结语

本文在原有MD5算法的基础上,通过进一步变换处理,增加字典字符来增大密钥空间[4],从而提高其安全性。对改进后的新MD5算法,给出了一种在PHP网站中的实现和应用,经过公开的解密工具破译测试表明,该MD5算法更加安全可靠。算法的改进使用了古典对称密码技术和网站加密函数等工具,新的MD5算法利用对称密码技术和现代散列算法[5]整合在一起,既有便捷性又提高了安全性。

图6 算法密钥空间分析

猜你喜欢

加密算法解密密钥
加密文档排序中保序加密算法的最优化选取
幻中邂逅之金色密钥
幻中邂逅之金色密钥
炫词解密
解密“一包三改”
密码系统中密钥的状态与保护*
炫词解密
炫词解密
基于整数矩阵乘法的图像加密算法
Android密钥库简析