您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页基于JAVA 技术的MD5 加密算法的设计与实现

基于JAVA 技术的MD5 加密算法的设计与实现

来源:筏尚旅游网
第27卷 第1期

2009年1月

沈阳师范大学学报(自然科学版)

JournalofShenyangNormalUniversity(NaturalScience)

Vol127,No.1Jan.2009

文章编号:1673-5862(2009)01-0075-03

基于JAVA技术的MD5加密算法的设计与实现

张浩华,齐维毅,赵子夫,李 瑶,潘庆超

(沈阳师范大学物理科学与技术学院,辽宁沈阳 110034)

摘   要:详细描述了在数字签名、电子商务、信息加密领域中广泛应用的MD5加密算法,并针对其高效、跨平台使用,提出利用JSP与JavaBean相结合的技术方法实现MD5加密算法.该方法采用Java语言实现MD5算法,并利用JavaBean组件进行封装,通过JSP技术进行相应页面的动态展现,既简化JSP网页结构体现了Java体系的技术优势,又保证了应用系统的安全性、跨平台性和提高系统的执行效率.

关 键 词:JAVA;MD5;JavaBean;加密中图分类号:TP393.03   文献标识码:A

0 引  言

随着网络的高速发展和服务的日趋完善,网络上流通的信息量呈几何级数增加.为了有效地保护、存储、管理和使用网上的私有信息,MD5(MessageDigestAlgorithm5)、SHA(SecureHashAlgorithm)等数据加密技术被广泛应用于网络领域[1].MD5的作用是让大容量信息在用数字签名软件签署私人密匙前被“压缩”成一种保密的格式,其主要优点在于:单向、极难逆的字符串变换算法;原文的微小变化,得到的摘要将大相径庭[2].近年来,出现了若干MD5破解算法[3],但多为概率性破解,算法只对部分信息集合适用,其实际影响要远小于它的理论意义,因此MD5仍是当前数字签名、加密等技术领域比较安全、有广泛应用的算法.Java技术中的JSP(JavaServerPage)是当前最有优势和发展前景的动态网站开发技术[4].JavaBean是封装业务逻辑实现复用性的最佳Java组件.因此,结合两者优势来实现MD5加密算法,不仅能应用于整个Java体系的WEB开发领域,而且可广泛应用于对数据有较高安全性要求的数字签名、电子商务、数据处理等领域.具有开发周期短、一次开发多处应用、可跨平台使用、运行效率高等的绝对优势.

1 MD5算法描述

MD5算法可简述为:以512位分组来处理输入字节串的信息,且每一分组又被划分为16个32位

子分组,经过了一系列的处理后,算法的输出由4个32位分组组成,将这4个32位分组级联后将生成一个128位散列值[5].

在MD5算法中,首先需要对信息进行填充,使其字节长度对512求余的结果等于448.因此,信息的字节长度(BitsLength)将被扩展至N3512+448,即N3+56个字节(Bytes),N为一个正整数.填充的方法是在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充.然后,在这个结果后面附加一个以位二进制表示的填充前信息长度.经过这2步的处理,现在的信息字节长度=N3512+448+=(N+1)3512,即长度恰好是512的整数倍.这样做的原因是为满足后面处理中对信息长度的要求.

MD5中有4个32位被称作链接变量(ChainingVariable)的整数参数,分别为:A=0x01234567,B=0xabcdef,C=0xfedcba98,D=0x763210.当设置好这4个链接变量后,就开始进入算法的四轮循环

收稿日期:2008209225

基金项目:辽宁省教育厅高等学校科学研究项目(2008679).

作者简介:张浩华(1977-),男,辽宁沈阳人,沈阳师范大学讲师,博士.

76

沈阳师范大学学报(自然科学版)              第27卷

运算.循环的次数是信息中512位信息分组的数目.

将4个链接变量复制到另外四个变量中:A到a,B到b,C到c,D到d.主循环有四轮,每轮循环都很相似.第一轮进行16次操作.每次操作对a、b、c和d中的其中3个作一次非线性函数运算,然后将所得结果加上第四个变量,文本的一个子分组和一个常数.再将所得结果向右环移一个不定的数,并加上a、b、c或d中之一.最后用该结果取代a、b、c或d中之一.每次操作中用到的四个非线性函数(每轮一个)分别为F(X,Y,Z)=X&Y|NOT(X)&Z;G(X,Y,Z)=X&Z|Y&NOT(Z);H(X,Y,Z)=XxorYxorZ;I(X,Y,Z)=Yxor(X|NOT(Z)),其中如果X、Y和Z的对应位是和均匀的,那么结果的每一位也应是和均匀的.F是一个逐位运算的函数.即,如果X,那么Y,否则Z.函数H是逐位奇偶操作符.

2 JSP和JavaBean

JSP是基于Java体系的WEB开发技术,用于创建跨平台及跨服务器的动态网页[6].与CGI、ASP、PHP等相比,它具有组件和网页设计从逻辑上分离、良好的扩展性和安全性、一次编写,到处运行、强调

可重用的组件等优点[7].JavaBean是一种可重用Java组件,它通过封装业务逻辑成为功能对象,实现被JavaApplet/Servelet/JSP等Java程序的调用[8].是目前功能强大及开发简单的最好的组件方式.如果将一些繁琐或者常用的动作,撰写于Bean内,可以达到简化和优化JSP网页结构的目的.如果已有实现某种功能的JavaBean,则创建包含这个功能的Web页面只需要实例化它,再用HTML表格将它定位即可.

3 算法实现3.1 实现方案为充分利用JSP的动态页面优势和JavaBean的组件优势,实现方案采取用Java实现MD5算法,并用JavaBean封装,利用JSP展现的方式.既保证了“一次编写到处运行”又体现了Java2在比较密集的计算中的高效率.3.2 MD5的JavaBean

为节约篇幅,仅给出几个编写过程中需注意的关键程序段

privatevoidmd5Update(byte[]inbuf,intinputLen)∥MD5的主计算过程

{inti,index,partLen;byte[]block=newbyte[];index=(int)(count[0]〉〉〉3)&0x3F;if((count[0]+=(inputLen〈〈3))〈(inputLen〈〈3))count[1]++;count[1]+=(inputLen〉〉〉29);partLen=2index;if(inputLen〉=partLen){

md5Memcpy(buffer,inbuf,index,0,partLen);md5Transform(buffer);for(i=partLen;i+63〈inputLen;i+=){md5Memcpy(block,inbuf,0,i,);md5Transform(block);}index=0;}else

i=0;md5Memcpy(buffer,inbuf,index,i,inputLen2i);}privatevoidmd5Transform(byteblock[])∥MD5核心变换程序,仅列出Round1,2,3,4略

{longa=state[0],b=state[1],c=state[2],d=state[3];long[]x=newlong[16];Decode(x,block,);/3Round13/

a=FF(a,b,c,d,x[0],S11,0xd76aa478L);/313/d=FF(d,a,b,c,x[1],S12,0xe8c7b756L);/323/c=FF(c,d,a,b,x[2],S13,0x242070dbL);/333/b=FF(b,c,d,a,x[3],S14,0xc1bdceeeL);/343/a=FF(a,b,c,d,x[4],S11,0xf57c0fafL);/353/d=FF(d,a,b,c,x[5],S12,0x4787c62aL);/363/

第1期          张浩华等:基于JAVA技术的MD5加密算法的设计与实现77

c=FF(c,d,a,b,x[6],S13,0xa8304613L);/373/b=FF(b,c,d,a,x[7],S14,0xfd469501L);/383/a=FF(a,b,c,d,x[8],S11,0x698098d8L);/393/d=FF(d,a,b,c,x[9],S12,0x8b44f7afL);/3103/c=FF(c,d,a,b,x[10],S13,0xffff5bb1L);/3113/b=FF(b,c,d,a,x[11],S14,0x5cd7beL);/3123/a=FF(a,b,c,d,x[12],S11,0x6b901122L);/3133/d=FF(d,a,b,c,x[13],S12,0xfd987193L);/3143/c=FF(c,d,a,b,x[14],S13,0xa679438eL);/3153/b=FF(b,c,d,a,x[15],S14,0x49b40821L);/3163/3.3 JSP中调用JavaBean

使用这个Bean只需要在JSP应用程序的WEB-INF/classes下建立一个beartool目录,然后将上述JavaBean程序编译得到的MD5.class拷贝到这个目录下,在需要使用MD5算法加密的JSP页面中使用〈jsp:useBeanid=’oMD5’scope=’request’class=’beartool.MD5’/〉就可实现MD5JavaBean的调用.其中id为建立Bean的实例时用的实例变量名.

4 结  论

随着Internet技术的不断发展,Web应用正逐步走向电子商务和企业级应用,其复杂性、动态性、安全性要求更高,分离处理逻辑显示方式的JSP,便于封装复用的JavaBean组件为Java技术的Web应用开发提供了优秀的解决方案,并具有强扩展性、易收缩性等优势.利用JSP和JavaBean技术实现的MD5加密算法,既充分体现了Java“一次编写,到处运行”的技术优势,又大幅增强数据安全性,必将在Web应用领域发挥重要作用,具有广泛的应用前景.参考文献:

[1][2][3][4][5][6][7][8]

张裔智,赵 毅,汤小斌.MD5算法研究[J].计算机科学,2008,35(7):2952297.陈 松,黄 炜.MD5算法的FPGA实现[J].信息安全与通信保密,2007(6):1292130.崔国华,周荣华,粟 栗.关于MD5强度分析的研究[J].计算机工程与科学,2007,29(1):45248.王国强.JSP引擎的性能优化研究[J].河北师范大学学报:自然科学版,2008,32(3):25228.

王津涛,覃尚毅,王冬梅.基于MD5的迭代冗余加密算法[J].计算机工程与设计,2007,28(1):41242.张大斌,王 慧,孙汉武.基于JSP的铁路生产安全系统的设计与实现[J].计算机工程与设计,2007,28(5):119321198.

靳其兵,李晓波.基于JSP的数据库连接技术的研究[J].计算机仿真,2007,24(4):1082111.马晓波.EJB组件技术及其应用研究[J].沈阳师范大学学报:自然科学版,2008,26(3):3262329.

DesignandImplementationofMD5Algorithm

BasedonJAVATechnology

ZHANGHao2hua,QIWei2yi,ZHAOZhi2fu,LIYao,PANQing2chao

(CollegeofPhysicsScienceandTechnology,ShenyangNormalUniversity,Shenyang110034,China)

Abstract:ThispaperdescribesapplicationofMD5Encryptalgorithmindigitalsigning,electricalbusiness,andinformation

encryption.Consideritsefficiencyandmultipleplatformapplication,bringaIdeatorealizeMD5EncryptalgorithmbyJSPandJavaBeanusingJavalanguagetorealizealgorithm,UsingJavaBeantoincludeitandusingJSPtodisplay.NotonlysimplifyJSPpagestoembodytechnicaladvantageofJavasystem,butalsoensuresecurity,multipleplatformandefficiencyofsystem.

Keywords:JAVA;MD5;JavaBean;encryption

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务