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

2016-03-10 12:28王平根
科技视界 2016年25期
关键词:程序段字母程序

王平根

(井冈山大学电子与信息工程学院,江西 吉安343009)

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

王平根

(井冈山大学电子与信息工程学院,江西 吉安343009)

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

图形验证码;Java Web;安全

0 引言

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

1 Java图片验证码原理

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

2 Java图片验证码实现方法

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

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

……

<title>数字字母混合验证码</title>

<!--<link rel="stylesheet"type="text/css"href="./styles.css">-->

</head>

<body>

${requestScope.loginmessage}

<br/>

<form action="/myhomework/login"method="post">

<br/> 请 输 入 验 证 码 :<input type="text"name="

checkimage">    <img

src="/myhomework/image3"id="CheckCode"></img><a

href="#"

onclick="myReload()">点击,换一个</a><br/>

</form>

</body>

……

验证图片:

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).

[责任编辑:李书培]

猜你喜欢
程序段字母程序
基于WinCC的物料小车控制系统设计与仿真
缓存:从字母B到字母Z
数控系统手轮回退功能的研究与实现*
试论我国未决羁押程序的立法完善
基于NC程序段的提高数控加工监控阈值与信号同步的方法*
“程序猿”的生活什么样
字母派对
英国与欧盟正式启动“离婚”程序程序
创卫暗访程序有待改进
如何处理Java程序中的错误