<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@page import="java.awt.image.BufferedImage"%>
<%@page import="java.awt.*"%>
<%@page import="java.io.OutputStream"%>
<%@page import="com.sun.image.codec.jpeg.JPEGImageEncoder"%>
<%@page import="com.sun.image.codec.jpeg.JPEGCodec"%>
<%
//设置页面不缓存
response.setHeader("pragma","no-cache");
response.setHeader("cache-control","no-cache");
response.setDateHeader("expires",0);
response.setContentType("Image/gif");
%>
<%
String s="";
int width=80,height=23;
char[] code=new char[]{
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','P','Q','R','S','T','U','V','W','X','Y','Z',
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','p','q','r','s','t','u','v','w','x','y','z',
'2','3','4','5','6','7','8','9'
};
Random random=new Random();
String strCode;
for(int i=0;i<4;i++)
{
strCode=String.valueOf(code[random.nextInt(code.length)]);
s=s+strCode;
}
//把得到的字符保存到session种
session.setAttribute("code",s);
//定义图像buffer
BufferedImage bufferedImage=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics2D gra=bufferedImage.createGraphics();
//填充背景颜色
gra.setColor(Color.white);
gra.fillRect(0,0,width,height);
gra.setFont(new Font("宋体",Font.BOLD+Font.ITALIC,20)); //设置字体样式
//画边框
gra.setColor(Color.blue);
gra.drawRect(0,0,width-1,height-1);
//产生干扰线
int x1=0,y1=0,x2=0,y2=0;
for(int i=0;i<30;i++)
{
x1=random.nextInt(100);
y1=random.nextInt(100);
x2=random.nextInt(100);
y2=random.nextInt(100);
gra.setColor(Color.black);
gra.drawLine(x1,y1,x1+x2,y1+y2);
}
//画出每个字符
char c;
for(int i=0;i<4;i++)
{
c=s.charAt(i);
gra.setColor(getColor());
gra.drawString(c+"",i*20+4,20);
}
OutputStream toClient=response.getOutputStream();
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(toClient);
encoder.encode(bufferedImage);
toClient.close();
out.clear();
out=pageContext.pushBody();
%>
<%!
private Color getColor()
{
Random random=new Random();
int red=0,green=0,blue=0;
red=random.nextInt(100);
green=random.nextInt(100);
blue=random.nextInt(100);
return new Color(red,green,blue);
}
%>
分享到:
相关推荐
易语言简单验证码识别源码,简单验证码识别,计算验证码,判断一下,判断相差值
本资料包“简单验证码样本集.zip”包含了一个针对简单验证码的训练集,总计10000个样本,每个验证码由四个字符组成,这为开发验证码识别系统提供了基础数据。 验证码的种类多样,包括图像验证码、音频验证码、数学...
用java实现的简单验证码程序,仅仅实现了随机文字,而且只是数字,未加入背景图片和干扰线
这个"安卓简单验证码demo"提供了一个基本的实现,帮助开发者理解如何在Android平台上创建自定义视图来绘制随机的验证码。下面我们将深入探讨相关的知识点。 首先,验证码的核心功能是生成随机的、难以自动识别的...
本文将详细介绍“通用验证码识别工具套件(简单验证码)”及其相关知识点。 该工具套件专为识别简单类型的验证码设计,允许用户自定义配置以适应不同的验证码样式,提升了验证码识别的通用性。这样的工具在某些场景...
本话题将深入探讨简单验证码的识别过程,涉及图像处理、阈值设置、图像识别算法以及图像存储流等关键技术。 首先,图像分割是验证码识别的第一步。在验证码图片中,每个字符通常都是独立的,因此我们需要通过图像...
在本项目"简单验证码.zip"中,验证码功能被应用于登录界面,增加了安全性,确保登录的是真实的人而非自动化程序。 【JSP(JavaServer Pages)】 JSP是Java平台上的服务器端脚本语言,用于创建动态网页。在本项目中...
这个“简单验证码生成jar包”提供了一个便捷的解决方案,帮助开发者在他们的应用中集成验证码功能。一个`.jar`文件是Java应用程序的归档文件,它可以包含代码、资源文件和元数据。`code_kyle_1.1.jar`很可能是这个...
在这个C#验证码范例中,我们将探讨如何创建一个简单的验证码生成器。 首先,验证码的基本原理是生成一组随机字符,通常是数字和字母的组合,然后将其显示给用户。用户需要在输入框中正确输入这些字符以验证他们的...
bmp简单验证码程序.cpp 简单验证码是指验证码图片里的字符,固定不变,或者变化很小的验证码,比如:字符上会有一些干扰点干扰线等情况,或者只有少数几种字体变化和字体大小变化。 这里给出源代码都是非常简单的...
【简单验证码ASP.NET程序】是一种基于ASP.NET技术开发的简单但功能齐全的验证码生成系统。在Web应用中,验证码主要用于防止自动化的恶意机器人或者爬虫进行非法操作,如注册、登录、评论等,确保用户交互的安全性。...
本程序是用C#语言编写的,专为识别简单的验证码设计,但遗憾的是,源码并未包含在提供的压缩包中。 在验证码识别中,主要涉及以下几个关键知识点: 1. 图像处理:验证码识别的第一步通常是将验证码图片转化为数字...
这个"易语言简易验证码源码.rar"文件显然包含了使用易语言编写的验证码程序的源代码。验证码(CAPTCHA)通常用于网络服务中,用来验证用户是否为真实的人,防止恶意机器人或自动化脚本的攻击。 验证码系统的核心...
在Delphi编程环境中,生成简单的验证码是一项常见的任务,主要用于网页或应用程序的身份验证,防止自动化的机器人或恶意软件进行非法操作。Delphi是一个强大的Object Pascal IDE,它提供了丰富的图形和图像处理功能...
本项目以"PHP简单验证码的实现"为主题,旨在帮助初学者理解并掌握如何在PHP中创建一个基本的验证码功能。 验证码的核心在于生成随机且难以被机器识别的图像,通常包含字母、数字的组合,有时会添加扭曲、噪点等元素...
易语言源码易语言简易验证码源码.rar 易语言源码易语言简易验证码源码.rar 易语言源码易语言简易验证码源码.rar 易语言源码易语言简易验证码源码.rar 易语言源码易语言简易验证码源码.rar 易语言源码易语言简易...
本项目“简单验证码识别系统(工具+代码)”提供了一套解决方案,适用于处理那些包含易于分割的单一字符和部分变化不大的粘连字符的验证码。 验证码识别通常涉及图像处理和机器学习两大技术领域。在图像处理阶段,...
"易语言简易验证码源码.zip" 是一个包含易语言编写验证码程序的源代码文件,对于想要学习易语言以及验证码生成技术的开发者来说,这是一个宝贵的资源。 验证码(CAPTCHA)是一种防止计算机自动程序(如机器人)进行...
本篇文章将详细讨论验证码的基本原理,以及如何使用Java实现简单的验证码破解方法。请注意,了解验证码破解知识主要是为了提高网站安全意识,避免自身系统被攻击,而不是用于恶意破解他人系统。 验证码的类型主要有...
易语言简单验证码生成和识别源码,简单验证码生成和识别,生成随机验证码,比对文本子程序