2024年5月31日发(作者:)

第27卷第3期 

萍乡高等专科学校学报 

2010年6月 

Vo1.27 NO.3 

Journal of Pingxiang College 

June 2010 

基于MD5算法的密码破解及加密改进方法 

熊 福,邓爱平 

(萍乡高等专科学校教务处,江西萍乡 337000) 

摘 要:本文介绍了MD5加密算法在应用方面遇到的一些问题,并且针对这种问题在基于MD5算法的基础上改进 

了加密方法,从而使MD5加密口令方面更加安全。 

关键词:MD5;算法;口令;加密;解密 

中图分类号:TP393 文献标识码:A 文章编号:1007—9149(2010)03—0061—05 

引言 

结果,从此宣布MD5加密算法不再是一种安全的加 

直以来MD5加密验证的安全性都是非常高 

密算法。虽然王小云教授公布了破解MD5算法的报 

的,很多互联网应用都将用户名对应密码通过MD5 

告,宣告该算法不再安全,但是对于公司以及普通用 

加密后保存,和以往仅仅明文保存相比,MD5加密后 

户而言,从算法上来破解MD5非常困难,因此MD5 

的保存信息更加安全,毕竟MD5加密后的信息安全 

仍然算是一种安全的算法。 

性更高,MD5加密方式也是单向的并不存在任何逆 

2 MD5算法描述 

向破解。但MD5也并不是真正安全的,入侵者在获 

MD5属于单向加密的加密算法。对于MD5,有 

得了MD5加密后的字符串后依然可以通过多种方 两个重要的特性:第一是任意两组数据,加密后的密 

法破解成明文密码。 

文肯定是不同的;第二是任意一组数据,经过加密后,密 

1 MD5简介 

文必须是永远不变的。对 5算法可叙述为六步。 

MD5的全称是Message Digest Algorithm 5(消 

第一步:补位。MD5算法先对输入的数据进行补 

息摘要算法第五版),是计算机安全领域广泛使用的 

位,使其位长对512求余的结果等于448。即数据扩 

种散列函数,用以提供消息的完整性保护。在9O年 展至K*512+448位,也就是K*64+56个字节,K 

代初由MIT Laboratory for Computer Science和 为整数。具体补位操作是补一个1,然后补0至满足 

RSA Data Security Inc的Ronald L.Rivest开发,经 

上述需求。 

MD2、MD3和MD4发展而来。它的作用是让大容量 第二步:补足数据长度。用一个64位的数字表示 

信息在用数字签名软件签署私人密钥前被“压缩”成 数据的原始长度B,把B用两个32位数表示。这时, 

种保密的格式。由于MD5算法的使用不需要支付 

数据就被填补成长度为512位的倍数。 

任何版权费用,所以一般的情况下MD5也不失为一 

第三步:初始化变量。要用到4个变量,分别为 

种非常优秀的加密算法,被个人和公司广泛使用。 A、B、C、D,均为32Bit长。初始化为:A= 

2004年8月17日的美国加州圣巴巴拉的国际 

0x01234567,B一0x89abcdef,C一0xfedcba98,D— 

密码学会议(Crypto’2004)上,来自中国山东大学的 

Ox76543210。 

王小云教授做了破译MD5、HAVAI 一128、MD4和 第四步:处理位操作函数。首先定义4个辅助函 

RIPEMD算法的报告,公布了MD系列算法的破解 

数:F(X,Y,Z)一(X&Y)l((~X)&Z),G(X,Y,Z) 

收稿日期:2O10一O5一O4 

作者简介:熊福(1979二_),江西萍乡人,男,助教,主要从事网络设计及网络安全方面的研究工作。 

・62・ 

萍乡高等专科学校学报 

3 MD5密码破解思路 

2010血 

(X&Z)f(Y&(~Z)),H(X,Y,Z)一X Y Z,I 

(X,Y,Z)一Y (Xl(~z))。函数中的X、Y、Z均为 

32Bit。如果X、Y和Z的对应位是独立和均匀的,那 

么结果的每一位也应是独立和均匀的。 

第五步:对输人数据做变化。处理数据,N是总 

的字节数,以64个字节为一组,每组做~次循环,每 

在目前的信息系统中,对MD5加密方法的利用 

主要通过在脚本页面中引用包含MD5加密函数代 

码的文件。以asp脚本为例,在需要调用的页面中加 

入MD5.asp为MD5加密函数代码文件,然后直接 

调用函数MD5(sMessage)即可,MD5加密后的值有 

次循环进行四轮操作。要变换的64个字节用16个 

16位和32位之分,如果在MD5加密函数中使用的 

32位的整数数组M[O…15]表示。而数组T[1… 

是MD5一LCase(WordToHex(a)&WordToHex 

64]表示一组常数,T[i]为;294967296*abs(sin(i)) 

(b)&WordToHex(c)&WordToHex(d)),则表示 

的32位整数部分,i的单位是弧度,i的取值从1到 是32位,如果使用的是MD5一LCase(WordToHex 

64。 。 

(b)&WordToHex(c)),则表示是16位。例如对明 

第六步:输出。最后得到的ABCD为输出结果, 

文为 xiongfu 的值进行加密,其MD5值有两个,如 

A,B,C,D连续存放,共16个字节,128位。A为低 

下所示: 

位,D为高位。按十六进制依次输出这个16个字节。 

“ ‘‘ “ “ ^ 0 ‘ ‘ 一 ““ - “ … …~…~ 

翻 0 (7,7 | 曩叠。藿 tl j 爨 | §≥蓦 |垂I誊 曩≯≥ l| / 

船ss∥Dr 与 f : 如 9 参 §i / 

ipalSsw0rd:MD5(A) :O54266OO8efcIc8E 26c.C48f94i805266} 

‘ ‘ ・・・ ‘ ~ 0 0 - 。_ ・ ‘‘_-- - 

在数据表T1中建立id,v,v一16,v~32四个字 密运算,产生v一16(16位密3C),v一32(32位密文)。如 

段,id为记录编号,假定v为明文,对v进行MD5加 图1所示。 

l i■●曩融曩-. 龋嘲黼镶黼礴骚骚黼礤蕊骠霈繇弱疆黼瑟爨瑟黼瑟瑟翳蕊懿繇臻瑟鼹臻麟躐鞫糕臻瀚 爨黯糯黼 麓 黼鼹骚醺黼蕊蕊麟鞠疆鞠gl鞫 

|墨?≥ ? 参参/|I蘑垂。磐l 。一碧磐磐 l llt| 磐 0l /一_萋 ll_i 0磐 黟0 

立 I3 了I c725t-b69f_3d2e aa1 c0f32 ̄4022ef3 iIaa730aaal c9t"32f4922ef3c1674210 

曼 l4 7a5Tasa743894a.O 4a25155 ̄369 ̄9b5c d97cc£e64 a25155 ̄369 ̄965ca0abgc49 

立 l5 1sZflker 5P50269106a85963 5209f9355 ̄50269lOb ̄8596346922 ̄dc 

显 16 2121 1212 477eB362d6a2.6edb 37b9766d{77e63b2dJBa26edbbe3盯d6a 

∥§ 1T sasd b7dealb44e3dl d55 5308dcbbbTdealb44 e3al d55ea了656f9 

18 11122 64d3曲 c6990af74 2bf0cc b4d3e66c6990af74bd78c658 

篝雾 19 dEfa= 380b5fbadc37

de56 ;6e35f8a4380551"badc37de56 ̄374bf56 

图1 

当我们用各种技术手段(包括日常搜集、排列组 

方式进行破解。 

合等)获取无限多的v,并得到无限多的v一16及v一 

(1)在线查询密码。一些在线的MD5值查询网 

32,那么这个数据库就相当于一个超大的密码字典, 

站提供MD5密码值的查询,输入MD5密码值后,如 

至此,密码破解仅仅是一个查询过程而已了。 

果在数据库中存在,那么可以很快获取其密码值。如 

基于上述破解思路,我们一般可以通过以下两种 

图2所示。 

第3期 熊福,邓爱平:g.q-MD5算法的密码破解及加密改进方法 .63. 

图2 

(2)使用MD5破解工具。网络上有许多针对 图3所示。 

MD5破解的专用软件,通过设置字典来进行破解。如 

图3 

因此简单的MD5加密是无法达到绝对安全的, (1)对明文password进行MD5加密,获得密文 

因为普通的MD5加密有多种暴力破解方式,想要保 

MD5(password)。 

证信息系统或者网站的安全,需要对MD5加密进行 

(2)使用截取函数截取加密后的密文,得到密码 

改进,才能增强其安全性。 

A,其中A=left(MD5(password),jqwz一1)。 

4改进加密方法 

(3)使用截取函数截取加密后的密文,得到密码 

4.1基于MD5算法的改进加密方法 

B,其中B—right(MD5(password),WZ一(jqwz+ 

本文提到的方法是在使用MD5加密算法对明 

jqws一1))。 

文加密的基础上,对密文进行改变,在密文中截取一 

(4)使用随机函数gen~key(jqws)填充被截取 

段数据并舍弃,用随机函数填充被舍弃数据,且整个 

的值。 

过程不改变MD5加密后的位数。其加密过程描述如 

(5)变换后的密码值为encrypt--password— 

下: 

A ̄get--key(jqws)8 变量说明。 

’64‘ 萍乡高等专科学校学报 2010丘 

解密(密码验 过 跟舢密过程失似,先 输入 

的明文进行MD5加密,按预定规则截取前半部分得 

到A ,后半部分得到B ,然后从数据库中读出密码中 

| 

的密 跟数据库中的密码柏匹配。 

4.2关键代码与实现 

关键实现代码如下: 

的A和B部分,如A==:A 且B=B ,则认定用户输入 

实现效果如图4.需要加密时商接调用encrypt--password函数即可。 

ht tp:,,www.pxcnc.corn/rod5一test.asp 

生成的随机数为:i 72flw 

修改后的密码为encrypt_gassword(ii,6,xiongfu,32): 

054266008ei 72Elw26cc48f941 805266 

原密=6马:054266008efcc8e626cc48f94l805266 ’ 

图4 

第3期 熊福,邓爱平:基于MD5算法的密码破解及加密改进方法 .65. 

从图4中可以看到,密文32位,第1位到第1O 

在网站或者系统代码泄露前,其数据也是相对安全 

的。 

参考文 献 

位为A部分,第11位至第16位为随机填充数,第17 

位到第32位为B部 ,随机填充数为“i72flw”。 

5结束语 

有人也曾提出修改MD5加密算法中的函数或 

变量的初始值,从而加强在使用原MD5算法的安 

(1j 李霞.MD5加密算法浅析及应用[J].运城学院学报, 

2005(05):56一一57. 

全,但是这种方法修改了MD5原函数或变量后,无 

法验证修改后的MD5算法在强度上是否跟原算法 

[2]梁田贵.算法设计与分析EM].北京:冶金工业出版社, 

2004. 

致。本文提及的方法是在原MD5加密的基础上, 

[3]崔国华,周荣华,粟栗.关于MD5强度分析的研究EJ3. 

计算机工程与科学.2007,22(7):34~36. 

[47陆宝华,王楠.信息系统安全原理与应用[M].清华大学 

出版社 2007. 

通过对密文截取一定位数的字符串,并用随机数进行 

填充,最后得到的密文虽然是通过MD5加密,但是 

其值与原值已经不一一样,故通过MD5常规破解方法 

是不可能破解其原始密码值的,从而保证了数据的安 

全。即使黑客通过各种攻击方法,如SQI 注入、跨站 

攻击等,获取数据库中的数据。通过本方法进行加密, 

[5] 张基温.信息系统安全教程EM].清华大学出版社, 

20O7. 

[责任校对:王科] 

The decryption and improved method of encryption based on MD5 

Xiong Fu,Deng Aiping 

(Teac'hing Affairs Office,Pingxiang College,Pingxiang 337000,China) 

Abstract:The paper introduces the application problems of MD5 encryption algorithm.Based on 

MD5 algorithm,it tries tO improve the encryption method,then makes the encryp{ion password of 

MD5 more secure. ・ 

Key words:MD5;algorithm;password;encryption;decryption