import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
import javax.imageio.ImageIO;
/**
* 动态验证码 关键代码
* @author xiaer
*
*/
public class ImageEnsure {
public ImageEnsure() {
}
private char mapTable[]={
'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','0','1','2','3',
'4','5','6','7','8','9'};
public String getEnsure(int width, int height, OutputStream os) {
if(width<=0)width=60;
if(height<=0)height=20;
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image.getGraphics();
// 设定背景色
g.setColor(new Color(0xFCF000));
g.fillRect(0, 0, width, height);
//画边框
g.setColor(Color.black);
g.drawRect(0,0,width-1,height-1);
// 取随机产生的认证码
String strEnsure = "";
// 4代表4位验证码
for(int i=0; i<4; ++i) {
strEnsure += mapTable[(int)(mapTable.length*Math.random())];
}
// 将认证码显示到图象中
g.setColor(Color.black);
g.setFont(new Font("Atlantic Inline",Font.PLAIN,18));
String str = strEnsure.substring(0,1);
g.drawString(str,8,17);
str = strEnsure.substring(1,2);
g.drawString(str,20,15);
str = strEnsure.substring(2,3);
g.drawString(str,35,18);
str = strEnsure.substring(3,4);
g.drawString(str,45,15);
// 随机产生50个干扰点
Random rand = new Random();
for (int i=0;i<50;i++)
{
int x = rand.nextInt(width);
int y = rand.nextInt(height);
g.drawOval(x,y,1,1);
}
// 释放图形上下文
g.dispose();
try {
// 输出图象到页面
ImageIO.write(image, "JPEG", os);
} catch (IOException e) {
return "";
}finally{
}
return strEnsure;
}
/*
public static void main(String []args) {
try{
BufferedOutputStream os = new BufferedOutputStream(
new FileOutputStream("c:\\test.jpg"));
new ImageEnsure().getEnsure(100, 200, os);
os.flush();
os.close();
} catch(Exception e) {}
}
*/
}
分享到:
相关推荐
在压缩包中的“gif动态登录验证码工具类”很可能是实现这种验证码功能的源代码,包含了生成随机字符串、制作GIF动画以及验证用户输入的核心逻辑。 总的来说,“gif动态登录验证码”是一种有效的安全措施,通过利用...
C#生成GIF动态验证码的过程通常涉及以下几个关键步骤: 1. **随机生成文本**:首先,我们需要生成一组随机字符,这些字符可以是字母、数字或者符号。为了增加难度,字符应该混合大小写,并且可以设置特定的长度。 ...
在登录过程中,动态验证码扮演着关键角色,为用户提供了一层额外的安全保障,确保只有合法用户能够完成身份验证。 动态验证码的核心特性在于其“动态”二字,意味着每次生成的验证码都是唯一的,且在一段时间后会...
在动态验证码的实现中,Servlet扮演了关键角色。每当AJAX请求到达服务器时,对应的Servlet会被调用。Servlet处理请求,生成新的验证码(随机字符串),并将该字符串存储在服务器的会话(session)中,作为验证的依据...
在IT行业中,前端开发是构建用户界面的关键环节,而验证码技术则是防止自动化程序(如机器人)滥用服务的重要工具。jQuery,作为一个广泛使用的JavaScript库,极大地简化了DOM操作、事件处理和动画效果。在这个名为...
在这个名为"Web验证码的代码"的项目中,开发者使用JavaScript和Java Web技术实现了一个完整的验证码功能。下面我们将详细探讨这个项目可能涉及的关键知识点。 首先,验证码的生成通常包括以下几个步骤: 1. **随机...
5. **关键代码示例** ```java // 在工具类中生成GIF验证码 public BufferedImage generateGif(String code) { // 创建图像、画笔、字体等 // 绘制验证码、干扰元素 // 生成多帧动画 // 编码为GIF } // 在...
这可能是由于服务器端生成验证码的代码逻辑有误,或者是使用的第三方DLL(动态链接库)存在缺陷。DLL文件通常包含了预编译的函数或组件,用于提供特定的功能,例如在这里可能是用于生成随机字符串和绘制验证码图像的...
以下是一个简单的Java验证码实现的关键步骤: 1. **生成随机字符序列**:首先,我们需要创建一个包含可能字符的数组或集合,然后通过随机数生成器选择一定数量的字符组合成验证码。例如,可以使用`Random`类和`...
用户输入验证是动态验证码的关键部分。通常,用户需要在限定时间内正确输入显示的验证码,然后发送到服务器进行验证。这涉及到监听用户输入、验证输入的正确性以及与服务器的通信。 8. **安全考虑**: 验证码应...
这个压缩包"5种JSP验证码的源代码.rar"提供的是五种不同的JSP验证码实现方式。下面我们将详细探讨这五种验证码的实现原理和关键知识点。 1. 图片验证码: 这是最常见的验证码类型,通过生成随机字符串并将其绘制到...
在JSP中实现验证码,通常涉及到以下几个关键步骤: 1. **生成随机字符串**:这是验证码的核心,通常由字母、数字或特殊字符组成,长度可自定义。可以使用Java的`Random`类和字符数组来生成随机字符串。 2. **图像...
下面我们将详细探讨验证码的基本原理、实现方式以及此源代码中的关键点。 验证码的核心目标是生成一个难以被机器自动识别的随机字符串或图像,同时确保人类用户能轻松理解并正确输入。在这个案例中,验证码由英文...
在这个过程中,我们将探讨如何使用Java语言来创建一个简单的动态验证码系统,主要包括以下几个关键知识点: 1. **图形库的使用**:在Java中,我们通常使用`java.awt`和`javax.swing`包来处理图形。这两个包提供了...
首先,我们需要两个关键文件:一个ASP.NET网页(通常是.aspx文件)用于显示和生成验证码,以及一个后端处理代码(如.aspx.cs或.aspx.vb文件)用于生成随机字符串和图像。这两个文件将包含以下功能: 1. **生成随机...
总结起来,基于JSP的验证码生成涉及到以下几个关键知识点: 1. **JSP技术**:用于创建动态网页,能与Java后端代码交互。 2. **Java图形处理**:使用`java.awt`和`javax.imageio`包,创建图像,绘制文字和形状。 3. ...
在.NET平台上,验证码识别是一个常见的任务,特别是在自动化测试和数据抓取等领域。本文将深入探讨一个基于C#...通过深入研究提供的源码,开发者可以掌握验证码识别的关键技术和实现细节,为自己的项目提供参考和灵感。
验证码识别通常包括以下几个关键步骤: 1. **图像预处理**:首先,我们需要对验证码图片进行预处理,包括灰度化、二值化、噪声消除等。灰度化将彩色图像转换为单色,减少计算复杂性;二值化是将图像转化为黑白两色...
1. **随机字符生成**:验证码的随机性和不可预测性是关键。PHP可以使用`rand()`或`sprintf()`函数生成一系列随机数字和字母,确保每次请求时都是新的验证码。 2. **图像创建**:PHP可以使用GD库或Imagick扩展来创建...
首先,实现动态验证码的关键在于创建一个可以生成随机字符串并将其绘制到图像上的类。这个类通常包含多个属性,用于定义验证码的样式和行为。在提供的代码中,可以看到一个名为`Validate`的类,它包含了以下关键属性...