资源描述:
《基于JAVA技术的MD5加密算法的设计与实现_张浩华.pdf》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、第27卷第1期沈阳师范大学学报(自然科学版)Vol.27,No.12009年1月JournalofShenyangNormalUniversity(NaturalScience)Jan.2009文章编号:1673-5862(2009)01-0075-03基于JAVA技术的MD5加密算法的设计与实现张浩华,齐维毅,赵子夫,李瑶,潘庆超(沈阳师范大学物理科学与技术学院,辽宁沈阳110034)摘要:详细描述了在数字签名、电子商务、信息加密领域中广泛应用的MD5加密算法,并针对其高效、跨平台使用,提出利用JSP与JavaB
2、ean相结合的技术方法实现MD5加密算法.该方法采用Java语言实现MD5算法,并利用JavaBean组件进行封装,通过JSP技术进行相应页面的动态展现,既简化JSP网页结构体现了Java体系的技术优势,又保证了应用系统的安全性、跨平台性和提高系统的执行效率.关键词:JAVA;MD5;JavaBean;加密中图分类号:TP393.03文献标识码:A0引言随着网络的高速发展和服务的日趋完善,网络上流通的信息量呈几何级数增加.为了有效地保护、存储、管理和使用网上的私有信息,MD5(MessageDigestAlgori
3、thm5)、SHA(SecureHashAlgorithm)等[1]数据加密技术被广泛应用于网络领域.MD5的作用是让大容量信息在用数字签名软件签署私人密匙前被“压缩”成一种保密的格式,其主要优点在于:单向、极难逆的字符串变换算法;原文的微小变化,得[2][3]到的摘要将大相径庭.近年来,出现了若干MD5破解算法,但多为概率性破解,算法只对部分信息集合适用,其实际影响要远小于它的理论意义,因此MD5仍是当前数字签名、加密等技术领域比较安全、有广泛应用的算法.Java技术中的JSP(JavaServerPage)是当
4、前最有优势和发展前景的动态网站开[4]发技术.JavaBean是封装业务逻辑实现复用性的最佳Java组件.因此,结合两者优势来实现MD5加密算法,不仅能应用于整个Java体系的WEB开发领域,而且可广泛应用于对数据有较高安全性要求的数字签名、电子商务、数据处理等领域.具有开发周期短、一次开发多处应用、可跨平台使用、运行效率高等的绝对优势.1MD5算法描述MD5算法可简述为:以512位分组来处理输入字节串的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由4个32位分组组成,将这4个32
5、位分组级联后将生成[5]一个128位散列值.在MD5算法中,首先需要对信息进行填充,使其字节长度对512求余的结果等于448.因此,信息的字节长度(BitsLength)将被扩展至N*512+448,即N*64+56个字节(Bytes),N为一个正整数.填充的方法是在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充.然后,在这个结果后面附加一个以64位二进制表示的填充前信息长度.经过这2步的处理,现在的信息字节长度=N*512+448+64=(N+1)*512,即长度恰好是512的整数倍.
6、这样做的原因是为满足后面处理中对信息长度的要求.MD5中有4个32位被称作链接变量(ChainingVariable)的整数参数,分别为:A=0x01234567,B=0x89abcdef,C=0xfedcba98,D=0x76543210.当设置好这4个链接变量后,就开始进入算法的四轮循环收稿日期:2008-09-25基金项目:辽宁省教育厅高等学校科学研究项目(2008679).作者简介:张浩华(1977-),男,辽宁沈阳人,沈阳师范大学讲师,博士.76沈阳师范大学学报(自然科学版)第27卷运算.循环的次数是信息
7、中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&YNOT(X)&Z;G(X,Y,Z)=X&ZY&NOT(Z);H(X,Y,Z)=Xxo
8、rYxorZ;I(X,Y,Z)=Yxor(XNOT(Z)),其中如果X、Y和Z的对应位是独立和均匀的,那么结果的每一位也应是独立和均匀的.F是一个逐位运算的函数.即,如果X,那么Y,否则Z.函数H是逐位奇偶操作符.2JSP和JavaBean[6]JSP是基于Java体系的WEB开发技术,用于创建跨平台及跨服务器的动态网页.与CGI、ASP、PHP等相比,它具