基于Java的图形验证码设计与实现

时间:2022-10-14 07:25:23

基于Java的图形验证码设计与实现

【摘 要】本文简单介绍了图形验证码的应用, 详细描述了Java图形验证码的设计原理和实现方法,同时,以数字和字母混合图形验证码为例给出了程序段及验证图片。

【关键词】图形验证码;Java Web;安全

0 引言

验证码的应用十分普遍。验证码一般是防止批量注册的,人眼看起来都费劲。二像百度贴吧未登录发贴要输入验证码大概是防止大规模匿名回帖的发生;目前,不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术,在一般注册用户ID的地方以及各大论坛都要要输入验证码;在购买火车票时为了减缓黄牛使用程序强票,购票前要输入验证码;为防止程序恶意登录,在登录时要输入验证码等等。所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片, 图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。

1 Java图片验证码原理

验证码是一张图片,图片中有存有一些信息,该信息在后台保留一份,且每次触发一事件时,都会导致该图片和后台的信息同步更新。Java中就是在servlet中随机生成一个指定位置的验证码,一般为四位,然后把该验证码保存到session中,在通过Java的绘图类以图片的形式输出该验证码。该图片上的信息通常较难识别,带有干扰线,或一些扭曲的信息。该图片是给用户看的,并让用户识别图片中的信息。用户填写正确的信息后,才能进行某些操作。我们之所以这样做的原因是为了防止某些人员利用自己编写的程序来对我们的系统进行一些破坏,因为程序是很难识别图片中的信息的,特别是加了干扰信息的图片,这就避免了一些外部程序对系统的破坏行为。

2 Java图片验证码实现方法

我们在Java中写一个专门用于生成验证码的Servlet,该Servlet调用了java类库中的BufferedImage和Graphics等一系列的类来生成图片,图片中的信息是通过生成随机数的方式确定下来的,再将信息写入到图片中。接下来将输入的信息通过保存在Session(会话对象)对象中,可以和前台的数据进行比对。最后通过IO将生成的图片写回到客户端,就是我们看到的验证码,如何确定验证码生成的位置,只要通过Html中的标签的href属性为Servlet的映射路径,img标签会应用到Servlet生成的图片。

图形验证码有很多类型,一般有数字的、字母的及数字和字母组合的验证码等等。本文只给出以数字和字母混合图形验证码的程序段及验证图片,其它的不作介绍。值得说明的是要安装好相应的运行软件。

3 结束语

基于安全性方面的考虑,大多数登录时需要输入一个验证码,这说明图形验证码在应用中非常重要。在Java Web 开发中,图形验证码是普遍使用的一项技术。本文只介绍了 Java图片验证码的一般原理和实现方法,大家通过编程,使用Java Web中的servlet以及Jcaptcha、Kaptcha两种开源组件来实现各式各样的验证码,使之应用更广泛、更安全。

【参考文献】

[1]李仲尉,王国辉,等.Java范例完全自学手册[M].北京:人民邮电出版社,2009:21-25.

[2]吕海东,张坤.ava EE 企业级应用开发实例教程.北京:清华大学出版社,2010,9.

[3]潘勇.Java Web 网站通用图形验证码的实现[J].电脑编程技巧与维护,2012(18).

上一篇:松宜煤矿区采矿活动对地质灾害的影响分析 下一篇:山东蓬莱金矿地质特点及找矿方向分析