APP下载

消息摘要算法在Java Web系统中的应用

2012-04-13陈坤定

长春大学学报 2012年4期
关键词:明文用户名消息

陈坤定

(闽西职业技术学院 计算机系,福建 龙岩 364021)

0 引言

Java Web作为目前构建web应用系统、支持动态处理的程序设计技术,在市场上已经表现出非常强大的生命力。利用这种技术可以建立先进、安全和跨平台的动态网站,很多企业也都采用J2EE来构建企业门户网站及B/S系统。无论是动态网站还是B/S系统,一般都有登录模块,而登录模块中包含用户名和密码等用户敏感内容。很多系统登录模块在设计时都是将密码以明文的形式进行存储,然后在此基础上提供取回密码的服务,这很容易使用户的隐密信息被泄漏出去。而且将密码以明文的方式存储在数据库中,将使拥有数据库访问权限的人可以轻而易举的获取用户密码,并假借用户名称进行操作,这势必给用户造成很大的损失。所以将用户信息存储在数据库的时候,很有必要对这些信息进行加密处理,使具有数据库操作权限的人无法获得用户的具体信息,以避免给用户造成损失。在众多的加密方法中,消息摘要算法中的MD5、SHA等虽然已经被王小云教授破解,已不是很安全,但是对于一般的用户和公司,用算法来破解消息摘要算法还是很困难的。因此,它仍然还是较为优秀安全的加密算法[1]。

消息摘要算法是将任意长度的“字节串”变换成一个固定位数的大整数,并且是一个不可逆的字符串变换算法。消息摘要算法的典型应用是对一段字节串产生指纹,以防止消息在传输过程中被“篡改”,从而保证数据的完整性[2]。

另外,它还广泛应用在加密和解密技术上,在Java Web系统中,可以用来加密敏感的账号或密码等信息。

1 用户注册过程

用户注册时,有些系统只对密码而没有对用户名进行摘要处理,这样容易使一些有不良企图的、能够访问数据库企业内部员工,将能很轻松地利用同样的摘要算法生成新密码,对用户的旧密码进行覆盖,然后用新的密码登录冒充用户的身份做一些有损用户利益的操作。而且有的人在覆盖密码以前,先把原来的旧密码保存起来,等操作完成后,再将旧密码存回数据库,这样用户比较难以发现,即使用户发现进行投诉后,企业也很难找到任何的蛛丝马迹。所以为更好的提高安全性,一并将用户名、密码等信息进行摘要处理,然后把摘要信息存入数据库中,将是一个正确的选择。其注册过程见序列图1。

2 用户登录过程

登录时,对输入的用户名、密码,即明文进行摘要处理(仅限于明文到密文的转换,摘要算法不可逆,不能从密文转换成明文),将处理的摘要信息通过数据库进行查询。登录过程见序列图2。

图1 用户注册过程

图2 用户登录过程

摘要算法在Java Web中的具体实现可以通过java.security包的MessageDigest类或者Apache commons的DigestUtils工具类来完成。第一种方法是由SUN公司提供的面向底层的算法,缺少相应的进制转换实现,无法将其字节数组形式的摘要信息转为十六进制字符串,使用不是很方便。第二种方法支持多种形式的支持,支持十六进制形式的摘要信息,使用较为方便[2]。

2.1 第一种方法

在JAVA6中使用摘要算法比较简单,只要导入java.security包使用MessageDigetst类生成一个JavaBean就可以在JavaWeb系统中使用。

具体过程:

(1)编写JavaBean

其中方法MDEncrypt()是将字符串in进行消息摘要处理,并将得到的十六进制字符---信息摘要通过另一个方法byteToString()转换为字符串。

(2)将MDEncoder部署到系统中。

(3)使用摘要加密功能。

①调用MDEncoder.MDEncrypt()对初始注册的用户名和密码进行摘要加密并保存到数据库中。

②用户登录时,将用户名和密码进行摘要加密,然后将加密后的信息摘要和数据库提取的数据进行对比。

在JSP系统中的具体参考代码如下:

2.2 第二种实现方式

可以利用Apache commons的DigestUtils工具类,它实际上对sun提供的摘要算法实现做了一个简单的包装,但却为使用该算法提供了方便。DigestUtils类位于org.apache.commons.codec.digest包中,因此,应首先下载commons-codec-1.x.jar包,并将其导入JSP系统中,然后将上述JSP页面稍加修改即可[3]。

3 结语

通过消息摘要算法在Java Web的应用,可以极大的提高信息安全性,但消息摘要算法有其局限性,因为其是不可逆的,密方不能转换为明文。所以,它一般使用在注册登录、消息传递等只需进行数据安整性验证的场合,而在一些需要把密文转换成明文的地方则不适合使用消息摘要算法。

[1]梁栋.Java加密解与解密的艺术[M].北京:机械工业出版社,2010.

[2]王常吉.信息与网络安全实验教程[M].北京:清华大学出版社,2007.

[3]何扬.使用MD5对存放在数据库中用户密码进行保护[EB/OL].(2011-11-27)[2012-02-13].http://www.blogjava.net/heyang/archive/2012/02/13/339188.html.

猜你喜欢

明文用户名消息
《护士进修杂志》投稿程序
一张图看5G消息
奇怪的处罚
机智的快递员
奇怪的处罚
四部委明文反对垃圾焚烧低价竞争
消息
消息
消息