MD5 加密算法的研究及应用_魏晓玲


中图分类号: TP311 文献标识码: A 文章编号: 1009- 2552( 2010) 07- 0145- 03 MD5加密算法的研究及应用 魏晓玲 (延安大学计算中心, 延安 716000) 摘 要: 针对当前网站建设和系统开发中用户信息等重要数据的安全问题, 提出了一种 MD5加 密算法, 可以对用户密码进行加密。MD5加密算法是一种比较常用的单向加密算法, 通过对该 算法的深入研究, 介绍了 MD5算法的特性、算法原理及其算法流程, 并给出 MD5算法在一个具 体系统中的实际应用, 得出 MD5算法是一种非常安全和易用的加密算法。 关键词: MD5; 加密方式; 加密算法; 应用 Research and application ofMD5 encryption algorithm W EI X iao-ling ( Com puter Center of Yan. an University, Yan. an 716000, China) Abstract: For the safety prob lem of important data in w ebsite construction and system development at presen,t such as user inform ation, a MD5 encryption algorithm that can encrypt user passw ords is put forw ard. As a one-w ay encryption algorithm, MD5 encryption algorithm is often used. In th is paper, firstly, on the basis of deep study on the algorithm, the characteristics, algorithm theory and algorithm flow of MD5 are introduced. Second ly, the real app lication of MD5 algorithm is given in a specific system. F inally, a conclusion is drawn thatMD5 algorithm is a very safe and easy to use encryp tion algorithm. Key words: MD5; encryption m ethod; encryption algorithm; app lication 0 引言 随着计算机技术和网络技术的广泛应用, 很多 单位都建立了自己的网站。但这些单位在得益于网 络的同时, 数据的安全性和自身的利益也受到了严 重的威胁。在一般情况下用户的资料信息是保存在 数据库中, 如果没有对数据库采取任何形式的保密 措施, 对于一些文件型数据库比如 A ccess等, 如果 有人得到这个文件, 那所有的资料都将泄露。所以 为了增加数据库的安全性, 有必要对数据库中的资 料进行加密, 这样即使有人得到了整个数据库, 如果 没有解密算法, 同样是不能查看数据库中的用户信 息。现在最常用的加密方法就是在用户注册时对用 户提交的信息进行加密。本文目的是介绍 MD5加 密算法的实现原理, 同时给出 MD5 具体的应用实 例, 从而 更好的 了 解 M D5 算法 的实 现原 理及 应用。 1 加密方式分类 加密方式可以分为单向加密和双向加密。双向 加密是最常用的加密算法, 它的原理是将能直接理 解的明文数据加密为不能理解的密文数据, 然后在 需要解密的时候, 可以利用一定的解密算法将这些 加密以后的密文再解密为原来可以理解的明文, 双 向加密一般应用于隐秘通讯 [ 1] 。而单向加密只能 对数据进行加密, 不能将密文解密。在实际应用中 的一个最典型的例子就是对数据库中的用户信息进 行加密, 当用户创建一个新的账号或者密码时, 这些 信息不是直接保存在数据库中, 而是经过加密以后 再保存。这样即使这些信息被泄露, 也不能理解这 些信息的 真正含义, 因为被泄 露的信息是一段 收稿日期: 2010- 04- 15 作者简介: 魏晓玲 ( 1974- ), 女, 实验 师, 在职 硕士, 主 要研 究方向 为信息系统的开发。 )145) 不能解密的密文 [ 2] 。 2 M D5算法介绍 2. 1 MD5简介 M D5是 M essage-digest A lgorithm 5 (信息-摘要 算法 )的缩写, 经 MD2、MD3和 M D4 发展而来。它 是把一个任意长度的字节串变换成一定长的大整 数。M D5算法是在 MD4的基础上增加了 /安全-带 子 0 ( safety-belts)的概念。虽然 MD5比 MD4稍微慢 一些, 但却更为安全。这个算法很明显的由四个和 M D4设计有少许不同的步骤组成。在 MD5 算法 中, 信息摘要的大小和填充的必要条件与 MD4完全 相同。由于 MD5算法的使用不需要支付任何版权 费用, 所以在一般的情况下 MD5不失为一种非常优 秀的中间技术 [ 3- 4] 。 2. 2 MD5算法原理 M D5算法是对输入信息进行初始化处理后, 以 512位分组来处理输入的信息, 每一分组又被划分 成为 16个 32位子分组, 经过了一系列的变换处理 后, 输出由四个 32位分组, 再将这四个 32位分组级 联后生成一个 128位散列值 [ 5- 6] 。 具体过程如下: ( 1) 首先对信息进行填充, 即在信息的后面填 充一个 1和若干个 0使其字节长度对 512求余的结 果等于 448。 ( 2) 对 MD5进行初始化, 即 MD5中用四个 32 位被称作链接变量的整数参数, 它们分别为: A = 0x01234567, B = 0x89abcde,f C = 0xfedcba98, D = 0x76543210。 ( 3) 开始进入算法的四轮循环运算。循环的次 数是信息中 512位信息分组的数目。将上面四个链 接变量复制到另外四个变量中: A 到 a, B 到 b, C 到 c, D到 d。主循环有四轮, 第一轮进行 16次操作。 每次操作对 a、b、c和 d中的其中三个做一次非线性 函数运算, 然后将所得结果加上第四个变量, 再将所 得结果向右位移一个不定的数, 并加上 a、b、c或 d 中之一。最后用该结果取代 a、b、c或 d中之一。 以下是每次操作中用到的四个非线性函数 (每 轮一个 )。 f( x, y, z) = ( x& y) | ( ( ~ x)& z) g( x, y, z) = ( xz) | ( y& ( ~ z) ) h( x, y, z) = x^y^z i( x, y, z) = y^( x | ( ~ z) ) (其中: /& 0是与运算, / |0是或运算, / ~ 0是非 运算, / ^0是异或运算, 它们都是位运算符。) 这四个函数的说明: 如果 x、y和 z的对应位是 独立和均匀的, 那么结果的每一位也应是独立和均 匀的。 f是一个逐位运算的函数。即, 如果 x, 那么 y, 否则 z。函数 h是逐位奇偶操作符。 假设 m j表示消息的第 j个子分组 (从 0到 15), ti为第 I步中的常数, < < < s表示循环左移 s位, 则四种操作为: ff( a, b, c, d, m ,j s, ti)表示 a= b+ ( ( a+ ( f( b, c, d) + m j+ ti) < < < s) gg( a, b, c, d, m,j s, ti)表示 a= b + ( ( a+ ( g( b, c, d) + m j+ ti) < < < s) hh( a, b, c, d, m,j s, ti)表示 a= b+ ( ( a+ ( h( b, c, d) + m j+ ti) < < < s) ii( a, b, c, d, m ,j s, ti)表示 a= b+ ( ( a+ ( i( b, c, d) + m j+ ti) < < < s) 常数 ti表示在第 i步中, ti是 4294967296* abs ( sin( i) )的整数部分, 4294967296等于 2 的 32 次 方, i的单位是弧度。所有这些完成之后, 将 A、B、 C、D分别加上 a、b、c、d。然后用下一分组数据继续 运行算法, 最后的输出是 A、B、C 和 D 的级联。 3 MD5加密算法的应用 下面给出 M D5算法在中国建设银行延安分行 的设备管理系统中的具体应用 (部分代码 )。在这 个系统中对 MD5算法的应用主要是针对用户的注 册登录, 用户在注册时所提交的密码信息是利用 MD5算法加密之后再保存到数据库中的。这样可 以防止用户密码的泄露, 既使是管理员也没有办法 查看到用户的密码, 有效的保护了系统的安全。在 用户进行登录时, 为了做身份验证, 必须对输入的密 码重新进行 MD5加密运算, 然后再与数据库中的信 息进行比对, 相等便可进入系统。 在本系统中主要是用 MD5对用户密码进行加 密, 实现的相关代码如下: pub lic classMD5 { . . . . . . / /F, G, H , I是 4个基本的 MD5函数 private long F( long x, long y, long z) { return ( x & amp; y) | ( ( ~ x ) & amp; z); } . . . . . . / /FF, GG, HH 和 II将调用 F, G, H, I进行近一 步变换 private long FF( long a, long b, long c, long d, long x, long s, long ac) { )146) a+ = F ( b, c, d) + x + ac; a= ( ( int) a < < s) | ( ( int) a > ; > ; > ; ( 32 - s) ); a + = b; return a; } . . . . . . / /md5In it是一个初始化函数, 初始化核心变量 private void md5Init( ) { count[ 0] = 0L; count[ 1] = 0L; state[ 0] = 0x67452301L; state[ 1] = 0xefcdab89L; state[ 2] = 0x98badcfeL; state[ 3] = 0x10325476L; return; } /* md5T ransform 是 MD5 核心 变换 程序, 有 md5Update调用, block是分块的原始字节* / private void md5T ransform ( byte block[ ] ) { long a = state[ 0], b = state[ 1], c = state[ 2], d = state[ 3]; long[ ] x = new long[ 16]; Decode ( x, block, 64); a= FF( a, b, c, d, x[ 0], S11, 0xd76aa478L); d= FF( d, a, b, c, x[ 1], S12, 0xe8c7b756L); c= FF( c, d, a, b, x[ 2], S13, 0x242070dbL); b= FF( b, c, d, a, x[ 3], S14, 0xc1bdceeeL); . . . . . . state[ 0] + = a; state[ 1] + = b; state[ 2] + = c; state[ 3] + = d; } /* md5U pdate是 MD5 的主计算过程, inbuf是 要变换的字节串, inputlen 是长度, 这个函数由 ge-t M D5ofStr调用* / private void md5U pdate( byte[ ] inbu,f int inputLen) { int ,i index, partLen; byte[ ] b lock = new byte[ 64]; index = ( int) ( coun t[ 0] > > > 3 ) & amp; 0x3F; if ( ( count[ 0] + = ( inputLen < < 3) ) < ( inputLen < < 3) ) count[ 1] + + ; count[ 1] + = ( inpu tLen > > > 29); partLen = 64 - index; if ( inputLen > = partLen) { md5M emcpy( buffer, inbu,f index, 0, partLen); md5Transform( bu ffer); for ( i = partLen; i + 63 < inpu-t Len; i + = 64) { md5M emcpy( block, inbu,f 0, ,i 64); md5Transform ( b lock); } index = 0; } else i = 0; / /md5M emcpy 是一个内 部使用的 byte数组的块拷贝函数 md5M emcpy( bu ffer, inbu,f index, ,i inputLen - i); } / /geMt D5ofStr是类 MD5 最主要的公共方 法, 入口参数是要进行 MD5变换的字符串, 返回的 是变换完的结果 pub lic String geMt D5ofS tr( String inbuf) { md5 In it( ); md5Update( inbu.f getBytes( ), inbu.f length( ) ); md5Final( ); / /md5Final整理和填写 输出结果 digestHexStr = " "; for ( int i = 0; i < 16; i+ + ) { digestHexStr + = byteHEX ( d-i gest[ i] ); } return digestHexStr; } } 在用户的身份认证中引入 MD5算法, 对用户信 息进行不可逆加密, 不同的用户信息拥有不同且唯 一的用户加密信息, (下转第 151页 ) )147) 9 另类文件丢失的修复方法 这类故障出现时一般会给出一组 CLSID 注册 码, 而不是告诉用户所损坏或丢失的文件名称, 因此 经常会让一些初级用户感到不知所措。例如本文在 运行窗口中执行 / gpedi.t msc0命令来打开组策略时 曾出现了/管理单元初始化失败 0的提示窗口, 点击 /确定0也不能正常地打开相应的组策略, 而经过检 查发现是因为丢失了 gpedi.t d ll文件所造成的, 虽然 窗口中没有提示所丢失的文件, 但是在实际解决这 类故障时也不是很难。 其实窗口中的 CLSID ( C lass IDoridentifier)类标 识提示就是一个解决问题的线索, 这是因为在注册 表中会给每个对象分配一个唯一的标识, 这样就可 通过在注册表中查找, 来获得相关的线索, 具体方法 如下。 在 /运行 0窗口中执行 / regedit0命令, 然后在打 开的注册表窗口中依次点击 /编辑 y查找 0, 然后在 输入框中输入 CLSID标识 (本例中的 CLSID 标识是 / { 8FC0B734-A0E1-11D1-A7D3-0000F87571E3 }0 ), 然后在搜索的类标识中选中 / InProcServer320项, 接 着在右侧窗口中将双击 / 默认 0项, 这时在 /数值数 据 0中会看到 /% SystemRoo%t \ System32 \GPEdi.t dll0, 其中的 GPEd i.t dll就是本例故障所丢失或损坏 的文件。这时只要将安装光盘中的相关文件解压或 直接复制到相应的目录中, 即可完全修复。 10 解决 NTLDR文件丢失 在突然停电或在高版本系统的基础上安装低版 本的操作系统时, 很容易造成 NTLDR 文件的丢失, 这样在登录系统时就会出现 / NTLDR is M issing Press any key to restart0的故障提示, 其可在 /故障恢 复控制台 0中进行解决。 进入故障恢复控制台, 然后插入W indow s XP安 装光盘, 接着在故障恢复控制台的命令状态下输入 / copy x: \ i386 \ntldr c: \0命令并回车即可 ( / x0为光 驱所在的盘符 ), 然后执行 / copy x: \ i386 \n tdetec.t com c: \0命令, 如果提示是否覆盖文件, 则键入 / y0 确认, 并按回车键。 11 修复受损的 Boo.t ini文件 在遇到 NTLDR文件丢失的故障时, boo.t in i文 件多半也会出现丢失或损坏的情况。这样在进行了 上面修复 NTLDR的操作后, 还要在故障恢复控制台 中执行 / bootcfg /redirect0命令来重建 Boo.t ini文 件。最后执行 / fixboot c: 0命令, 在提示是否进行操 作时输入 / y0确认并回车, 这样 W indow s XP的系统 分区便可写入到启动扇区中。当执行完全部命令 后, 键入 / exit0命令退出故障恢复控制台, 重新启动 后系统即可恢复如初。 参 考 文 献: [ 1] 杨速章,陈静. W indow s XP操作 应用基础 [M ]. 人民邮 电出版 社, 2008. [ 2] 景凤宣. 计算机应用基础 ) 基于 W indow s XP[M ]. 2版. 电子工 业出版社, 2008. [ 3] 谢川, 朱丰磊, 谢川, 等. W indow s网 络操作 系统 [ M ]. 高 等教育 出版社, 2006. 责任编辑: 么丽苹 (上接第 147页 ) 即使是有人通过网络窃取或者非法入侵数据库等方 式获得了用户的重要信息, 也只是加了密的且无法 解密的符号, 有效的增强了用户信息的安全性。 4 结束语 M D5算法是由 MD2、MD3和 MD4一步步改进 而来。因其算法复杂, MD5在计算速度上做出了适 当的牺牲, 但就目前普通应用而言, MD5算法还是 完全能够胜任的, 而且还没有出现新的诸如 M D6之 类的替代算法, 故 MD5在今后相当长的一段时间内 都还有其广泛的应用价值。实践证明, 在网站建设 和应用系统的开发过程中通过引入 MD5算法, 有效 的增强了用户重要信息的安全性, MD5加密算法是 一种优秀的信息加密算法。 参 考 文 献: [ 1] 冯登国, 裴定一. 密码学导引 [M ]. 科学出版社, 2003. [ 2] 施卫峰, 周俊, 等. 多用户信息系统 中数据安全 性控制及 其实现 [ J]. 微机发展, 2003( 13). [ 3] 孙忠林, 赵卫东, 等. 高级用户权 限加密管理技术 [ J]. 计算机研 究, 2003. [ 4] 中国信息安全论坛 [ EB /OL]. http: / /www. chinafirst. org. cn. [ 5] 杨波. 现代密码学 [M ]. 北京: 清华大学出版社, 2003. [ 6] H aller N. The S/ KEY One2T im e Passw ord System [ Z ]. RFC 1760, February 1995. 责任编辑: 刘新影 )151)
还剩3页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 3 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

y2g7

贡献于2013-11-13

下载需要 3 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf