`
windywindy
  • 浏览: 170089 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

验证码(二)

阅读更多
image.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"%>
<%@page import="java.io.OutputStream"%>

<%!Color getRandColor(int fc, int bc) {
		Random random = new Random();
		if (fc > 255)
			fc = 255;
		if (bc > 255)
			bc = 255;
		int r = fc + random.nextInt(bc - fc);
		int g = fc + random.nextInt(bc - fc);
		int b = fc + random.nextInt(bc - fc);
		return new Color(r, g, b);
	}%>
<%
	try {
		response.setHeader("Pragma", "No-cache");
		response.setHeader("Cache-Control", "no-cache");
		response.setDateHeader("Expires", 0);
		int width = 60, height = 20;
		BufferedImage image = new BufferedImage(width, height,
				BufferedImage.TYPE_INT_RGB);
		OutputStream os = response.getOutputStream();
		Graphics g = image.getGraphics();
		Random random = new Random();
		g.setColor(getRandColor(200, 250));
		g.fillRect(0, 0, width, height);

		g.setFont(new Font("Times New Roman", Font.PLAIN, 18));
		g.setColor(getRandColor(160, 200));
		for (int i = 0; i < 155; i++) {
			int x = random.nextInt(width);
			int y = random.nextInt(height);
			int xl = random.nextInt(12);
			int yl = random.nextInt(12);
			g.drawLine(x, y, x + xl, y + yl);
		}
		String sRand = "";
		for (int i = 0; i < 4; i++) {
			String rand = String.valueOf(random.nextInt(10));
			sRand += rand;
			g.setColor(new Color(20 + random.nextInt(110), 20 + random
					.nextInt(110), 20 + random.nextInt(110)));
			g.drawString(rand, 13 * i + 6, 16);
		}
		session.setAttribute("rand", sRand);	// 验证码 加入Session
		g.dispose();

		ImageIO.write(image, "JPEG", os);
		os.flush();
		os.close();
		os = null;
		//response.flushBuffer();
		out.clear();
		out = pageContext.pushBody();
	} catch (IllegalStateException e) {
		System.out.println(e.getMessage());
		e.printStackTrace();
	}
%>



login.jsp
<td class="LoginLabel">							验证码:					
<td>
	<h:inputText id="vcode" styleClass="inputValidate"
		tabindex="3" required="true" size="8" style="ime-mode:disabled" requiredMessage="*" validatorMessage="验证码不能为空">
	</h:inputText>
	<h:graphicImage id="rand" url="image.jsp" alt="验证码"
		styleClass="validateImg" />
</td>
<td>
	<span style="color: #ffffff; font-size: 12px; 
         cursor: pointer;"	onclick="document.getElementById('login:rand').src='image.jsp?'+Math.random();">看不清楚,<br />
		更换一张!</span>
</td>
分享到:
评论

相关推荐

    易语言验证码二值化/清除杂点算法源码

    易语言验证码二值化/清除杂点算法源码是一个针对图像处理的编程实践,主要涉及易语言编程环境下的图像识别技术。在这个项目中,开发者Mr.Yang提供了独特的算法,用于将验证码图片转换为二值图像并清除其中的杂点,以...

    易语言验证码识别系统内有垂直分割,二值化,去噪

    在这个易语言编写的验证码识别系统中,我们能看到几个关键的技术环节,包括垂直分割、二值化、去噪以及CFS连通分割算法和滴水算法。下面将详细解释这些概念及其在验证码识别中的作用。 1. **垂直分割**:在图像处理...

    java代码中图形验证码的源代码

    ### Java代码中图形验证码的实现 #### 知识点概览 本文将深入解析一个Java图形验证码的实现案例。此案例包含了一个名为`RandCodeImage`的类,它继承自`HttpServlet`类,并实现了图形验证码的生成逻辑。通过本案例的...

    DEDE自定义表单加验证码功能+js必填项

    #### 二、实现过程 本文将详细介绍如何在DEDE系统中为自定义表单添加验证码功能以及前端JavaScript的必填项校验。 ### 三、添加验证码功能 #### 1. 修改后端代码 首先,我们需要在DEDE的后端代码中增加验证码的验证...

    C# 验证码识别基础方法及源码

    1. 图像预处理:首先,我们需要对验证码图像进行预处理,包括灰度化、二值化、噪声去除等,以便后续的分析。这些操作可以帮助我们简化图像,使其更易于识别。 2. 文本定位:接下来,我们需要找到图像中的文字区域。...

    【验证码二】使用验证码-附件资源

    【验证码二】使用验证码-附件资源

    验证码二值化,清除杂点算法源码-易语言

    验证码二值化与清除杂点算法是图像处理中的关键技术,主要应用于识别系统,如网站登录、手机应用等的安全验证。二值化是将图像转换为黑白两色调的过程,以简化图像并突出关键特征,便于后续的字符识别。清除杂点则是...

    易语言-易语言验证码二值化/清除杂点算法

    在这个"易语言-易语言验证码二值化/清除杂点算法"的压缩包中,包含的是关于图像处理的源码,特别是针对验证码图像的二值化和杂点清除技术。 二值化是图像处理中的一个关键步骤,它将图像转化为只有黑白两种颜色的...

    java-验证码识别-验证码破解

    为了提高识别率,你可能需要对验证码图像进行预处理,包括灰度化、二值化、降噪等步骤。Tess4J并不直接提供这些功能,但你可以使用Java的其他库,如OpenCV,来完成这些操作。例如: ```java BufferedImage image = ...

    python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别

    二值化 降噪 倾斜校正分割字符 建立训练库 识别 由于是实验性质的,文中用到的验证码均为程序生成而不是批量下载真实的网站验证码,这样做的好处就是可以有大量的知道明确结果的数据集。 当需要真实环境下需要...

    验证码破解的方法,简单验证码破解java示例

    1. 图像预处理:首先,我们需要对验证码图片进行预处理,包括灰度化、二值化、去噪等,以减少背景干扰,使字符更易于识别。在Java中,可以使用Java Advanced Imaging (JAI)库或者OpenCV库来实现这些操作。 2. 分割...

    按键精灵验证码教程

    验证码识别通常涉及图像处理和模式识别,包括灰度化、二值化、噪声去除、特征提取等步骤。按键精灵虽然不具备内置的图像处理能力,但可以通过调用外部图像处理库,如OpenCV,对验证码图片进行预处理,然后通过比较...

    VB识别验证码源码 VB识别验证码源码 VB识别验证码源码

    预处理步骤可能包括灰度化、二值化、平滑滤波、边缘检测等,目的是减少干扰并突出文字部分。VB的`ColorMatrix`和`ImageAttributes`类可以用来调整图像颜色,而`ConvolutionMatrix`可以实现滤波操作。 3. 文字分割:...

    验证码识别 字符提取

    ### 验证码识别 字符提取 #### 一、引言与背景 光学字符识别(Optical Character Recognition,简称OCR)技术是一种将印刷品或手写体转化为可编辑的电子文本的技术。它广泛应用于日常生活中的各种场景,如文档管理...

    layUI的验证码功能及校验实例

    整个流程中,验证码的安全性是通过在服务端进行二次校验来保证的。即使前端校验被绕过,没有正确的验证码字符,服务端也不会认可该次请求。 此外,文件内容中提及的`bodycz-shortcut-listen="true"`属性可能是指对...

    验证码反爬-超级鹰打码平台-验证码点选、验证码滑动资源

    二、验证码滑动 滑动验证码则需要用户按照特定路径滑动一个部分以解锁整个图像。这类验证码的破解相对复杂,因为它们涉及到了运动轨迹的识别。`sliding_captcha.zip`可能包含了解析滑动验证码的算法或脚本,通常需要...

Global site tag (gtag.js) - Google Analytics