- 浏览: 3010248 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (893)
- android (110)
- iphone (198)
- java (79)
- JavaScript手册-目录 (9)
- JavaScript手册-Array (19)
- JavaScript手册-Boolean (5)
- JavaScript手册-Date (50)
- JavaScript手册-Math (30)
- JavaScript手册-Number (14)
- JavaScript手册-RegExp (7)
- JavaScript手册-String (38)
- JavaScript手册-全局函数 (8)
- JavaScript实用脚本 (7)
- Others (21)
- java-jpcap (7)
- java-thread (1)
- ibm文章 (3)
- classloader (2)
- java-filter (2)
- 运行环境 (33)
- java-正则 (2)
- oracle (1)
- linux-shell (26)
- wap (1)
- sqlite (3)
- wow (1)
- jvm (1)
- git (5)
- unity3d (29)
- iap (2)
- mysql (23)
- nginx (14)
- tomcat (9)
- apache (2)
- php (1)
- ubuntu (40)
- rsa (1)
- golang (21)
- appstore (5)
- sftp (2)
- log4j (2)
- netty (18)
- 测试工具 (6)
- memcache (5)
- 设计模式 (1)
- centos (8)
- google_iab (5)
- iOS专题 (4)
- mac (10)
- 安装配置帮助手册 (2)
- im4java_graphicsmagick (5)
- inotify-tools (1)
- erlang (6)
- 微信支付 (1)
- redis (8)
- RabbitMQ (5)
最新评论
-
heng123:
Netty视频教程https://www.douban.com ...
netty4.0.23 初学的demo -
maotou1988:
使用Netty进行Android与Server端通信实现文字发 ...
netty4.0.23 初学的demo -
码革裹尸:
非常感谢,正好用上
android 呼入电话的监听(来电监听) -
rigou:
提示的/222.177.4.242 无法链接到ip地址,是什 ...
通过 itms:services://? 在线安装ipa ,跨过app-store -
duwanbo:
GridView与数据绑定
★★★ 本篇为原创,需要引用转载的朋友请注明:《 http://stephen830.iteye.com/blog/257751 》 谢谢支持! ★★★
关于验证码的作用下面引用百度[http://baike.baidu.com/view/842.htm]上查到的一段资料:
好了,知道了验证码的作用后,下面我们也来生成一个简单的登录验证码。
第一步,准备生成验证码图片的一个servlet.(CheckCoderTool.java)
第二步,在web.xml中配置上面的servlet.
第三步,准备登录的jsp页面 (code.jsp)
其中有一段 /CheckCoder?t=<%=t%>,在调用生成图片验证码的servlet后面加了个时间戳参数,可以防止验证图片从缓存中取出,确保每次显示的都是当前最新生成的验证图片。
下面是随机生成4位数字java方法:
第四步,就是检验填写的验证码是否正确。
当然,上面的例子生成的验证码是非常简单的,在实际使用中还需要加入更多的随机因素和混淆效果,这样才能更好的起到其该有的作用。
------------------------------------------
分享知识,分享快乐,希望文章能给需要的朋友带来小小的帮助。
关于验证码的作用下面引用百度[http://baike.baidu.com/view/842.htm]上查到的一段资料:
引用
验证码的作用:有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上是用验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,腾讯的QQ社区),我们利用比较简易的方式实现了这个功能。虽然登陆麻烦一点,但是对网友的密码安全还来说这个功能还是很有必要,也很重要。但我们还是 提醒大家主要保护自己的密码 ,尽量使用混杂了数字、字母、符号在内的6位以上密码,不要使用诸如1234之类的简单密码或者与用户名相同、类似的密码,免得你的账号给人盗用给自己带来不必要的麻烦。
(1).验证码一般是防止批量注册的,人眼看起来都费劲,何况是机器。二像百度贴吧未登录发贴要输入验证码大概是防止大规模匿名回帖的发生目前,不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术。所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。
(2).一般注册用户ID的地方以及各大论坛都要要输入验证码
(3).常见的验证码
1,四位数字,随机的一数字字符串,最原始的验证码,验证作用几乎为零。2,CSDN网站用户登录用的是GIF格式,目前常用的随机数字图片验证码。图片上的字符比较中规中矩,验证作用比上一个好。没有基本图形图像学知识的人,不可破!可惜读取它的程序,在CSDN使用它的第一天,好像就在论坛里发布了,真是可怜!
2,汉字,QQ网站注册目前最新的验证码,都是汉字,随机生成,打起来更难了!
3,QQ网站用户登录用的是PNG格式,图片用的随机数字+随机大写英文字母,整个构图有点张扬,每刷新一次,每个字符还会变位置呢!有时候出来的图片,人眼都识别不了,厉害啊…4,MS的hotmail申请时候的是BMP格式, 随机数字+随机大写英文字母+随机干扰像素+随机位置。
4,韩文或日文,现在跑跑HF上MS注册都要打韩文的,这更增加了难度,要去修学下才行..
5,Google的Gmail注册时候的是JPG格式,随机英文字母+随机颜色+随机位置+随机长度。
6,其他各大论坛的是XBM格式,内容随机。
(1).验证码一般是防止批量注册的,人眼看起来都费劲,何况是机器。二像百度贴吧未登录发贴要输入验证码大概是防止大规模匿名回帖的发生目前,不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术。所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。
(2).一般注册用户ID的地方以及各大论坛都要要输入验证码
(3).常见的验证码
1,四位数字,随机的一数字字符串,最原始的验证码,验证作用几乎为零。2,CSDN网站用户登录用的是GIF格式,目前常用的随机数字图片验证码。图片上的字符比较中规中矩,验证作用比上一个好。没有基本图形图像学知识的人,不可破!可惜读取它的程序,在CSDN使用它的第一天,好像就在论坛里发布了,真是可怜!
2,汉字,QQ网站注册目前最新的验证码,都是汉字,随机生成,打起来更难了!
3,QQ网站用户登录用的是PNG格式,图片用的随机数字+随机大写英文字母,整个构图有点张扬,每刷新一次,每个字符还会变位置呢!有时候出来的图片,人眼都识别不了,厉害啊…4,MS的hotmail申请时候的是BMP格式, 随机数字+随机大写英文字母+随机干扰像素+随机位置。
4,韩文或日文,现在跑跑HF上MS注册都要打韩文的,这更增加了难度,要去修学下才行..
5,Google的Gmail注册时候的是JPG格式,随机英文字母+随机颜色+随机位置+随机长度。
6,其他各大论坛的是XBM格式,内容随机。
好了,知道了验证码的作用后,下面我们也来生成一个简单的登录验证码。
第一步,准备生成验证码图片的一个servlet.(CheckCoderTool.java)
/* * Created on 2005-10-15 * Author stephen * Email zhoujianqiang AT gamil DOT com * CopyRight(C)2005-2008 , All rights reserved. */ package com.soft4j.utility; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGEncodeParam; import com.sun.image.codec.jpeg.JPEGImageEncoder; /** * * @author stephen * @version 1.0.0 */ public class CheckCoderTool extends HttpServlet { /** * 生成登录验证码. * 验证码的数据从客户的session中的属性c中获取.<br> * 生成的验证码以JPEG图片方式输出. */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("image/jpeg"); String c = (String) request.getSession().getAttribute("c"); if (c == null)c = ""; int width = c.length() * 8 + 10; int height = 16; int startX = 5; int startY = 12; BufferedImage bi = new BufferedImage(width, height,BufferedImage.TYPE_INT_BGR); Graphics2D g = bi.createGraphics(); g.setColor(Color.GREEN); g.setBackground(Color.black); g.clearRect(0, 0, width, height); g.drawString(c, startX, startY); JPEGImageEncoder encoder = null; JPEGEncodeParam param = null; try { encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream()); param = encoder.getDefaultJPEGEncodeParam(bi); param.setQuality(0.9f, false); encoder.encode(bi); } catch (Exception e) { e.printStackTrace(); } finally { bi = null; g = null; c = null; encoder = null; param = null; } } }
第二步,在web.xml中配置上面的servlet.
... <servlet> <servlet-name>CheckCoderTool</servlet-name> <servlet-class>com.soft4j.utility.CheckCoderTool</servlet-class> </servlet> ... <servlet-mapping> <servlet-name>CheckCoderTool</servlet-name> <url-pattern>/CheckCoder</url-pattern> </servlet-mapping> ...
第三步,准备登录的jsp页面 (code.jsp)
其中有一段 /CheckCoder?t=<%=t%>,在调用生成图片验证码的servlet后面加了个时间戳参数,可以防止验证图片从缓存中取出,确保每次显示的都是当前最新生成的验证图片。
<%@ page contentType="text/html;charset=UTF-8"%> <%@ page import="java.util.Date"%> <%@ page import="com.soft4j.utility.StringTool"%> <% response.setHeader("Cache-Control","no-cache"); response.setHeader("Expires","Thu,01 Jan 1970 00:00:01 GMT"); String checkCode = StringTool.randomChars(4);//生成验证码 StringTool.randomChars(4)方法在下面的例子中能找到. session.setAttribute("c",checkCode);//验证码存入session中 long t = (new Date()).getTime();//确保每次刷新都生成新的验证码图片 %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>登录管理</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body bgcolor="#ffffff" topmargin="150px" leftmargin="20px" rightmargin="20px"> <form method="post" action="login.jsp"> <center><h2>登录管理</h2></center> <br> <table cellspacing="0" cellpadding="0" border="0" width="100%"><tr><td class="line"><img height="1" alt="" width="1"></td></tr> <tr><td align="center" bgcolor="#efffff"> <br><br> 账号:<input type="text" name="login_id" value=""> 密码:<input type="password" name="login_pwd" value=""> 验证码:<input type="text" name="check_code" value="" size=5> <IMG src=<%=request.getContextPath()%>/CheckCoder?t=<%=t%> alt=请把看到的4位数字输入左边的验证码框内> <input type="submit" name="submit" class="buttonblue" value=" 进入 "> <br><br><br> </td></tr> <tr><td class="line"><img height="1" alt="" width="1"></td></tr> </table> </form> </body> </html>
下面是随机生成4位数字java方法:
/** * 生成随机字符串. <br> * 随机字符串的内容包含[0-9]的字符. <br> * * @param randomLength * 随机字符串的长度 * @return 随机字符串. */ public static String randomChars(int randomLength) { char[] randoms = { '0','1', '2', '3', '4', '5', '6', '7', '8', '9' }; Random random = new Random(); StringBuffer ret = new StringBuffer(); for (int i = 0; i < randomLength; i++) { ret.append(randoms[random.nextInt(randoms.length)]); } random = null; return ret.toString(); }
第四步,就是检验填写的验证码是否正确。
<%@ page contentType="text/html;charset=UTF-8"%> <% try{ String checkCode = request.getParameter("check_code"); if(checkCode==null || "".equals(checkCode)) throw new Exception("缺少验证码。"); String rightCheckCode = (String)session.getAttribute("c"); if(!checkCode.equals(rightCheckCode)) throw new Exception("验证码不正确。"); //继续验证用户名/密码 //... }catch(Exception e){ }finally{ // } %>
当然,上面的例子生成的验证码是非常简单的,在实际使用中还需要加入更多的随机因素和混淆效果,这样才能更好的起到其该有的作用。
------------------------------------------
分享知识,分享快乐,希望文章能给需要的朋友带来小小的帮助。
评论
2 楼
丁丁思宇
2015-08-06
<%@ page import="com.soft4j.utility.StringTool"%>
是导了哪个jar包呀
是导了哪个jar包呀
1 楼
Javakeith
2010-09-30
<%@ page import="com.soft4j.utility.StringTool"%>
这个是调用randomChars这个方法吗?
这个是调用randomChars这个方法吗?
发表评论
-
Java的内存机制
2016-08-22 13:27 4821.Java的内存机制 Java 把内存划分成两 ... -
监听域对象中属性的变更的监听器
2016-07-18 19:06 1755监听域对象中属性的变更的监听器 域对象中属性 ... -
HttpSessionActivationListener
2016-07-18 18:46 649HttpSessionActivationListe ... -
Web容器监听器(实现在线统计人数,踢人)
2016-07-18 10:48 951Web容器监听器(实现在线统计人数,踢人) Servl ... -
HttpSessionBindingListener接口
2016-07-18 10:29 642HttpSessionBindingListene ... -
ServletRequestAttributeListener接口
2016-07-17 22:24 8342. HttpSessionAttribut ... -
Servlet3中异步Servlet特性介绍
2016-07-17 15:50 846Servlet3中异步Servlet特性介绍 ... -
HttpSessionAttributeListener
2016-07-15 17:49 696HttpSessionAttributeListener ... -
使用ServletContextAttributeListener
2016-07-15 16:47 847使用ServletContextAttr ... -
ServletRequestListener
2016-07-15 16:25 601ServletRequestListener接口 ... -
HttpSessionListener
2016-07-15 14:56 635HttpSessionListener接口 M ... -
ServletContextListener 接口
2016-07-15 12:16 628在 Servlet API 中有一个 Se ... -
ReflectASM,高性能的反射
2016-04-29 17:19 961http://www.oschina.net/p/r ... -
Java多线程与静态方法
2016-04-26 11:52 850Java多线程与静态方法 在多线程中使用静态方法会发生什么 ... -
log4j日志输出格式
2016-04-12 20:58 1117log4j日志输出格式 在LOG4J的配置文件中,l ... -
Servlet3.0
2016-04-12 16:58 698一、Servlet3.0介绍 Servlet3 ... -
log4j2 使用详解
2016-04-12 14:14 1466log4j2 使用详解 转载自 Blog of ... -
Eclipse jar打包和命令行运行
2016-04-08 10:44 2963?Eclipse jar打包和命令行运行 第1步: ... -
GRAPHICSMAGICK+IM4JAVA错误Cannot run program "gm": error=2
2015-05-19 15:27 4112在通过 GRAPHICSMAGICK+IM4JAVA ... -
GraphicsMagick安装、实时生成缩略图
2015-05-19 13:39 2422GraphicsMagick安装、实时生成缩略图 ...
相关推荐
这个类可能包含生成验证码字符串的方法,以及将字符串转化为图像的方法。其中可能包括对字体、颜色、背景、干扰线等的设置,以增加验证码的复杂性和安全性。 2. ImageServlet.java:这是一个Servlet类,它处理HTTP...
java生成随机验证码, 这是一个demo, eclipse项目,导入eclipse即可
一个登录验证生成验证码用struts 后台生成验证码在jsp页面输出生成图片
在IT领域,验证码(CAPTCHA)是一...在提供的压缩包文件“图片验证码生成”中,可能包含了实现上述功能的源代码示例,你可以通过学习和理解这些代码,加深对Java生成图片验证码的理解,并根据实际需求进行调整和优化。
java生成验证码的工具类,这个现在有依赖可以直接引入调用,但这个工具类没有引入依赖,大家也容易看懂代码,理解其含义。也可直接去工具类中调整生成验证码的宽度、高度、颜色、背景颜色、生成的随机数数量、干扰线...
该工具类使用随机字符生成验证码,并支持自定义验证码长度和字体样式。生成的验证码图片背景透明,线条清晰,可轻松辨认。本源码包含了工具类源码及调用示例,可供开发者参考使用,集成到您的项目中。
java 生成彩色验证码的程序,改程序可以极大的帮助你,是你可以自动生成彩色的验证码
源代码可能包括生成验证码的类、处理用户输入的控制器以及相关的配置文件。资源文件可能包含了用于绘制验证码的自定义字体,以显示中文字符。说明文档则详细解释了项目的用途、如何运行和使用示例,帮助开发者快速...
java生成验证码源码包括彩色验证码 包括jsp生成验证码和彩色验证码
验证码是网络应用中常见的一种安全机制,用于防止自动...总的来说,Java生成随机验证码的过程涵盖了随机数生成、字符串处理、图像处理等多个编程领域。通过合理的设计和实现,可以创建出既安全又用户友好的验证码系统。
Java随机生成验证码图片,适用于web登录验证等。个人觉得很不错~
- **Servlet**:在Servlet中调用工具类的方法,生成验证码并将其保存到服务器的一个临时目录,同时将验证码内容保存在Session中,以供后续验证使用。 - **响应客户端**:Servlet返回生成的GIF图像到客户端,通常...
总的来说,Java生成验证码是一个结合了数学随机性、图像处理和安全性考量的过程。通过学习和使用`kaptcha`或其他验证码生成库,开发者能够快速地在自己的项目中实现这一功能。同时,理解和实现验证码的生成也能加深...
有没有发现最后生成了一串长的base64编码 把这一串编码放到img标签在前面加上"data:image/gif;base64,"是能直接使用的 ;base64,(你的base64编码)"/> 验证码最佳宽高计算公式:字体大小和图片高度相等,图片宽度=...
验证码(CAPTCHA)是一种用于验证用户是否为人类的自动化测试技术。...以上就是使用Java生成验证码的基本流程和关键知识点。通过调整各种参数和细节,可以根据实际需求定制出更复杂、更难被机器识别的验证码系统。
这个"java生成验证码demo"提供了生成自定义验证码图片的方法,包括设置图片尺寸、验证码长度,以及添加各种视觉混淆元素,以增加机器识别的难度。 首先,我们要理解验证码的基本原理。它通常由一组随机生成的字母或...
在JAVA编程语言中,我们可以实现动态生成验证码的机制,以提供安全的用户验证体验。下面将详细介绍如何在JAVA中实现验证码的生成。 首先,验证码通常由一组随机字符(包括字母、数字)组成,它们被扭曲、旋转或添加...
6. **保存和输出**:生成验证码图像后,需要将其保存为JPEG或PNG等格式,以便在Web应用中显示。`ImageIO.write()`方法可以将`BufferedImage`对象写入到输出流中。 7. **服务器端验证**:当用户输入验证码后,服务器...
Java生成图片验证码的过程涉及图像处理、随机数生成以及字符串编码等多个知识点。 首先,验证码的核心是生成一个随机的字符串,通常包含字母和数字。在Java中,可以使用`Random`类配合字符数组来生成这种字符串。...