现代计算机(总第三
○
五
期
系统用户密码MD5加密的分析和实现
张景文
(东莞理工学校,东莞523000)
摘
要:关键词:账号安全;MD5;密码加密;安全分析
收稿日期:2008-12-08
修稿日期:2009-02-23
作者简介:张景文(1977-),男,广东河源人,讲师,研究方向为计算机教育、Web 程序开发、数据库管理
介绍和分析MD5加密算法及其工作原理,介绍基于.NET 环境下系统用户密码的MD5
加密实现方法,并提出改进思想,列举主要的实现代码。
0引言
设计应用程序或网站过程中有许多信息要进行
安全的保护,例如管理员与会员的密码信息,这些信息保存在数据库中,如果数据库一旦被下载密码也会随之泄露,带来重大安全事故。本文提出运用MD5加密技术对关键信息进行加密,强化了系统的安全系数。
MD5将任意长度的字节串映射为一个128bit 的大整数,并且通过该128bit 反推原字符串在目前尚不可能,即使可看到源程序和算法描述,也无法将一个
MD5的值变换回原始的字符串。
图1信息加密过程
1MD5算法思想
MD5算法思想可简单地叙述为:用512bit 分组
来处理输入的信息,这里每一分组又划分为16个
32bit 子分组,经过算法进行加密处理后,算法的输出结果是4个32bit 分组组成的信息,最后将信息级联后生成1个128bit 散列值。
第一步,填充信息
在输入信息的长度(以位为单位)对512的求余结果不等于448的情况下,需要填充的方法使该信息的长度对512的求余结果等于448。填充的方法是填充一个1和多个0,直到求余结果等于448时才停止用0对信息的填充。
第二步,调整信息长度为512的整数倍
为满足后面处理中对信息长度的要求,需要用
64bit 来存储填充前信息长度。这64bit 加在第一步结果的后面,这样信息长度就变为N ×512+448+64=
(N+1)×512(bit),即长度恰好是512的整数倍。
第三步,设置好4个链接变量,初始化MD5参数
MD5中共有4个32bit 链接变量(Chaining Vari -able )的整数参数,它们分别为:
A=0x01234567B=0x89abcdef C=0xfedcba98D=0x76543210
将上面4个链接变量复制到另外4个变量中:A
到a ,B 到b ,C 到c ,D 到d 。
第四步,定义好共4个的MD5按位操作函数
X ,Y ,Z 为32bit 整数。
F(X,Y,Z)=(X and Y)or (not(X)and Z)G(X,Y,Z)=(X and Z)or (Y and not(Z))H(X,Y,Z)=X xor Y xor Z I(X,Y,Z)=Y xor (X or not(Z))
如果X 、Y 和Z 的对应位是独立和均匀的,那么结果的每一位也应是独立和均匀的。其中F 是一个逐位运算的函数。即,如果X,那么Y,否则Z 。函数H 是逐位奇偶操作符。
然后,再定义4个分别用于四轮变换函数。设Mj 表示消息的第j 个子分组(从0到15),<<S 表示循环左移S 位,则四种操作为:
FF(a,b,c,d,Mj,s,ti)表示a=b+((a+(F(b,c,d)+Mj+ti)<<s)GG(a,b,c,d,Mj,s,ti)表示a=b+((a+(G(b,c,d)+Mj+ti)<<s)HH(a,b,c,d,Mj,s,ti)表示a=b+((a+(H(b,c,d)+Mj+ti)<<s)
现代计算机(总第三○五期
II(a,b,c,d,Mj,s,ti)表示a=b+((a+(I(b,c,d)+Mj+ti)<<s)
第五步,对输入数据作四轮变换运算
主循环有四轮的变换过程,每一轮都要进行16
次操作。每次操作对a、b、c和d中的其中3个作一次
非线性函数运算,然后将所得结果加上第四个变量,
文本的一个子分组和一个常数。再将所得结果向右环
移一个不定的数,并加上a、b、c或d中之一。最后用
该结果取代a、b、c或d中之一。N是总的字节数,以
64个字节为一组,每组作一次循环,每次循环进行四
轮操作。要变换的64个字节用16个32位的整数数
组15]表示。而数组64]表示一组常数,T[i]
为4294967296*abs(sin(i))的32位整数部分,i的单位
是弧度,i的取值从1到64。
这四轮(64步)是:
第一轮
FF(a,b,c,d,M0,7,0xd76aa478)
FF(d,a,b,c,M1,12,0xe8c7b756)
FF(c,d,a,b,M2,17,0x242070db)
FF(b,c,d,a,M3,22,0xc1bdceee)
FF(a,b,c,d,M4,7,0xf57c0faf)
FF(d,a,b,c,M5,12,0x4787c62a)
FF(c,d,a,b,M6,17,0xa8304613)
FF(b,c,d,a,M7,22,0xfd469501)
FF(a,b,c,d,M8,7,0x698098d8)
FF(d,a,b,c,M9,12,0x8b44f7af)
FF(c,d,a,b,M10,17,0xffff5bb1)
FF(b,c,d,a,M11,22,0x895cd7be)
FF(a,b,c,d,M12,7,0x6b901122)
FF(d,a,b,c,M13,12,0xfd987193)
FF(c,d,a,b,M14,17,0xa679438e)
FF(b,c,d,a,M15,22,0x49b40821)
第二轮
GG(a,b,c,d,M1,5,0xf61e2562)
GG(d,a,b,c,M6,9,0xc040b340)
GG(c,d,a,b,M11,14,0x265e5a51)
GG(b,c,d,a,M0,20,0xe9b6c7aa)
GG(a,b,c,d,M5,5,0xd62f105d)
电脑密码破解GG(d,a,b,c,M10,9,0x02441453)
GG(c,d,a,b,M15,14,0xd8a1e681)
GG(b,c,d,a,M4,20,0xe7d3fbc8)
GG(a,b,c,d,M9,5,0x21e1cde6)
GG(d,a,b,c,M14,9,0xc33707d6)
GG(c,d,a,b,M3,14,0xf4d50d87)
GG(b,c,d,a,M8,20,0x455a14ed)
GG(a,b,c,d,M13,5,0xa9e3e905)
GG(d,a,b,c,M2,9,0xfcefa3f8)
GG(c,d,a,b,M7,14,0x676f02d9)
GG(b,c,d,a,M12,20,0x8d2a4c8a)
第三轮
HH(a,b,c,d,M5,4,0xfffa3942)
HH(d,a,b,c,M8,11,0x8771f681)
HH(c,d,a,b,M11,16,0x6d9d6122)
HH(b,c,d,a,M14,23,0xfde5380c)
HH(a,b,c,d,M1,4,0xa4beea44)
HH(d,a,b,c,M4,11,0x4bdecfa9)
HH(c,d,a,b,M7,16,0xf6bb4b60)
HH(b,c,d,a,M10,23,0xbebfbc70)
HH(a,b,c,d,M13,4,0x289b7ec6)
HH(d,a,b,c,M0,11,0xeaa127fa)
HH(c,d,a,b,M3,16,0xd4ef3085)
HH(b,c,d,a,M6,23,0x04881d05)
HH(a,b,c,d,M9,4,0xd9d4d039)
HH(d,a,b,c,M12,11,0xe6db99e5)
HH(c,d,a,b,M15,16,0x1fa27cf8)
HH(b,c,d,a,M2,23,0xc4ac5665)
第四轮
II(a,b,c,d,M0,6,0xf4292244)
II(d,a,b,c,M7,10,0x432aff97)
II(c,d,a,b,M14,15,0xab9423a7)
II(b,c,d,a,M5,21,0xfc93a039)
II(a,b,c,d,M12,6,0x655b59c3)
II(d,a,b,c,M3,10,0x8f0ccc92)
II(c,d,a,b,M10,15,0xffeff47d)
II(b,c,d,a,M1,21,0x85845dd1)
II(a,b,c,d,M8,6,0x6fa87e4f)
II(d,a,b,c,M15,10,0xfe2ce6e0)
II(c,d,a,b,M6,15,0xa3014314)
II(b,c,d,a,M13,21,0x4e0811a1)
II(a,b,c,d,M4,6,0xf7537e82)
II(d,a,b,c,M11,10,0xbd3af235)
II(c,d,a,b,M2,15,0x2ad7d2bb)
II(b,c,d,a,M9,21,0xeb86d391)
所有这些完成之后,将A、B、C、D分别加上a、b、
c、d。然后用下一分组数据继续运行算法,最后的输出
是A、B、C和D的级联。
2MD5加密在.NET的实现
在.NET开发系统中,NETSDK提供Form-
现代计算机(总第三
○
五
期
sAuthentication 类,其中的方法HashPassword -ForStoringInConfigFile 可直接使用MD5算法,经过编程可以自定义加密函数MD5()。
Function md5(ByVal md5txt As String)Return
System.Web.Security.FormsAuthentication.HashPassword -ForStoringInConfigFile(md5txt,"MD5")
End Function
实际应用中,调用函数MD5(),就可将一段明文变成不可逆并具有唯一性的密文。
3MD5加密的安全分析
MD5加密算法在目前是十分安全的算法,MD5
是一种Hash 算法,Hash 算法的特点就是单方向性,例如可以把一个文件转成一串字符,但反向却不可能。
2004年召开的国际密码学年上,山东大学的王小云教授在发表了一篇《散列(哈希)函数MD4、和
RIPEMD 中的碰撞》论文,王小云教授的研究成果证实了利用MD5算法的碰撞可以严重威胁信息系统安
全,因而有人认为MD5的应用到此终结。事实上王小云教授只是发现了一些“强碰撞”现象,MD5的根基确实受到了极大的动摇,但要真将其应用到实际中还有较长过程。而且MD5本身在不断改进,再和另外一些算法进行交叉加密或多次加密,或增加明文长度等,MD5在非关键领域应用应该有较长生命期。
4加密程序的改进措施
目前来讲,一些黑客破获这种密码的方法是一种
被称为“跑字典”的方法。其实是把常用的密码经
MD5处理后的数据存储起来然后再与要破译的MD5密码结果相匹配就有可能得到明文。这种方法的确对于一些简单的密码存在破解的可能,但这种危险是可以通过合适的技术手段给予降低。
针对用“跑字典”进行破解的方法有两种常用安全对策,一种是加强密码的本身的设置,密码的长度要至少8个字符以上,同时不要用单纯的字母和数字,最好是字母与数字加符号的随机组合,并定时更换,减少被字典表数据匹配的机会;第二种方法是,对生成的MD5密码进行再加密,这样生成密码就不可能在字典表中到。笔者采取的方法就是第二种方法:MD5加密后程序再加密,进一步提高了密码的安全性。
图2对数据再加密步骤
程序加密实现代码如下:
Dim s As String
s =md5("aaa")'第一次对密码“aaa ”进行MD5加密Dim Code As String Dim i As Integer i =1
Dim length length =Len(s)
Do While (i <=length)Dim strtemp As String Dim iasc As Integer strtemp =Mid $(s,i,1)
iasc =Asc(strtemp)+1'令加密结果字符加序数1Code =Left $(Code,i -1)+Chr(iasc)i =i +1Loop s =Code
s =s &"A2C7E6D9BA9F"'加密结果加上附加码s =md5(s)'第二次MD5加密
5结语
MD5是一种非常易用和安全的加密措施,适当
应用可以加强网站和程序的安全性,另外MD5加密还可以广泛用于操作系统的登录认证上,例如Unix 、各类BSD 系统登录密码、数字签名等诸多方面。本文所提到一些加密的改善技巧比单纯的MD5加密又进一步加强了密码的安全。
参考文献
[1]徐茂智,游林.信息安全与密码学[M].北京:清华大学出版社,2007:121~127
[2]梁小利,曹明刚,程伟明.基于ASP.NET 技术的数据处理
研究[J].北京:农业网络信息,2008(5):23~25
[3]姬武军,牛光.网站平台安全防入侵问题解决方法与实现[J].合肥:电脑应用技术,2007(2):16~18
[4]樊伟,周正国.ASP.NET 的学生信息管理系统安全性分析[J].太原市:太原师范学院学报(自然科学版),2008(1):32~34
[5]李学俭.一种Web 应用系统的纯软件加密方法[J].成都
市:信息安全与通信保密,2008(6):25~27
(下转第195页)
现代计算机(总第三
○
五
期Analysis and Implementation of System Users MD5
Encrypted Password
ZHANG Jing-wen
(Dongguan Science and Technical School,Dongguan 523000)
Abstract :Keywords :Account Security ;MD5;Encrypted Password ;Security Analysis
Describes and analyzes the MD5encryption algorithm and its working principle,presents
the improvement measures of the users MD5encrypted password of the system based on .NET,and puts forward the improvement ideas,lists the main implement codes.
Design and Development of Visual FoxPro Online
Teaching Website
CHEN Yan-juan
,PAN Ling-yan
(Physics &Electronic Engineering Department,Hanshan Teachers College,Chaozhou 521041)
Abstract :Keywords :Teaching Website ;System Structure ;ASP ;Module Implement
Introduces a teaching Website management system for the Visual FoxPro course,including
the design development and main software used in the system.This system helps improve
the teaching effectiveness by using the net resources and multimedia,also conduces to in -crease student's interesting and capability of self-study.
○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○
(上接第191页)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论