public class VerifyCode {
2 static Random r = new Random();
3 static String ssource = " ABCDEFGHIJKLMNOPQRSTUVWXYZ " + " abcdefghijklmnopqrstuvwxyz " + " 0123456789 " ;
4 static char [] src = ssource.toCharArray();
5
6
7 // 产生随机字符串
8
9 private static String randString ( int length) {
10 char [] buf = new char [length];
11 int rnd;
12 for ( int i = 0 ;i < length;i ++ ) {
13 rnd = Math.abs(r.nextInt()) % src.length;
14
15 buf[i] = src[rnd];
16 }
17 return new String(buf);
18 }
19
20 // 调用该方法,产生随机字符串,
21 // 参数i: 为字符串的长度
22 public String runVerifyCode( int i) {
23 String VerifyCode = randString(i);
24 return VerifyCode;
25 }
26
27
28 // 给定范围获得随机颜色
29 public Color getRandColor( int fc, int bc)
30 {
31 Random random = new Random();
32 if (fc > 255 ) fc = 255 ;
33 if (bc > 255 ) bc = 255 ;
34 int r = fc + random.nextInt(bc - fc);
35 int g = fc + random.nextInt(bc - fc);
36 int b = fc + random.nextInt(bc - fc);
37 return new Color(r,g,b);
38 }
39
40 // 调用该方法将得到的验证码生成图象
41 // sCode:传递验证码 w:图象宽度 h:图象高度
42 public BufferedImage CreateImage(String sCode)
43 {
44 try {
45 // 字符的字体
46 Font CodeFont = new Font( " Arial Black " ,Font.PLAIN, 16 );
47 int iLength = sCode.length(); // 得到验证码长度
48 int width = 22 * iLength, height = 20 ; // 图象宽度与高度
49 int CharWidth = ( int )(width - 24 ) / iLength; // 字符距左边宽度
50 int CharHeight = 16 ; // 字符距上边高度
51
52 // 在内存中创建图象
53 BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
54
55 // 获取图形上下文
56 Graphics g = image.getGraphics();
57
58 // 生成随机类
59 Random random = new Random();
60
61 // 设定背景色
62 g.setColor(getRandColor( 200 , 240 ));
63 g.fillRect( 0 , 0 , width, height);
64
65 // 设定字体
66 g.setFont(CodeFont);
67
68 // 画随机颜色的边框
69 g.setColor(getRandColor( 10 , 50 ));
70 g.drawRect( 0 , 0 ,width - 1 ,height - 1 );
71
72 // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
73 g.setColor(getRandColor( 160 , 200 ));
74 for ( int i = 0 ;i < 155 ;i ++ )
75 {
76 int x = random.nextInt(width);
77 int y = random.nextInt(height);
78 int xl = random.nextInt( 12 );
79 int yl = random.nextInt( 12 );
80 g.drawLine(x,y,x + xl,y + yl);
81 }
82
83
84 for ( int i = 0 ;i < iLength;i ++ )
85 {
86 String rand = sCode.substring(i,i + 1 );
87 // 将认证码显示到图象中
88 g.setColor( new Color( 20 + random.nextInt( 60 ), 20 + random.nextInt( 120 ), 20 + random.nextInt( 180 )));
89 g.drawString(rand,CharWidth * i + 14 ,CharHeight);
90 }
91 // 图象生效
92 g.dispose();
93 return image;
94 } catch (Exception e) {
95 // e.printStackTrace();
96 // System.out.println(e.getMessage());
97 }
98 return null ;
99 }
100
101 // 测试
102 public static void main(String[] args) {
103 // VerifyCode vc = new VerifyCode();
104 // String s1 = vc.runVerifyCode(4);
105 // Fun.DreamNewsTitle;System.out.println(s1);
106 // Image im = vc.CreateImage(s1);
107 // Graphics g = im.getGraphics();
108 // g.drawImage(im,20,20,this);
109 // g.drawString(s1,20,20);
110
111 }
112 }
分享到:
相关推荐
中文彩色验证码实现(变形\噪点\点击更换) <br>一个中文彩色验证码程序,实现了文字的变形,随机噪点及点击更换验证码,代码非常简单.
基于JSP的彩色验证码实现。需要注意的地方是验证码是为了安全才加的,所以把它做成图片的格式让别人难以破解。所以contentType="image/jpeg; charset=utf-8"而不是 contentType="text/html; charset=utf-8
中文彩色验证码实现(变形\噪点\点击更换) 一个中文彩色验证码程序,实现了文字的变形,随机噪点及点击更换验证码,代码非常简单,适合入门的朋友
### JSP彩色验证码的实现 #### 一、概述 在Web应用中,为了防止恶意登录或自动化工具的攻击,通常会采用验证码技术来确保用户的真实性。验证码(CAPTCHA)是一种区分用户是计算机还是人类的全自动程序,常用于阻止...
### JSP 彩色验证码实现解析 #### 一、项目背景与目标 本文将详细介绍如何在JSP中实现彩色验证码的生成与验证功能。彩色验证码不仅能够提高网站的安全性,还可以提升用户体验。根据文档的要求,我们需要创建三个...
在IT行业中,验证码是一种常见的安全机制,用于防止自动化的机器人或恶意软件进行非法操作,如批量注册、垃圾邮件发送等。本教程将深入探讨如何...学习并掌握这些知识点,对于理解和实现JSP彩色验证码功能至关重要。
Java生成彩色验证码是一种常见的安全措施,用于防止自动化脚本或恶意机器人进行非法操作,例如注册、登录等。在Web开发中,JSP(JavaServer Pages)可以用来创建动态的网页内容,包括验证码图像。以下是对标题和描述...
彩色验证码的实现是通过创建难以由计算机识别的图像来完成这一目标,而人类用户相对容易识别。 本主题涉及的主要知识点包括: 1. **Servlet技术**:Servlet是Java编程语言中用于处理HTTP请求的服务器端组件。在...
JSP实现彩色验证码(源码示例)
彩色验证码: 1.原理:随机生成一个包含字符串的图片,用户读取图片中的字符信息,将其输入到指定文本框中,随着登录或者注册功能的提交将其传递给服务器进行验证处理。 2.作用:防止通过程序进行批量注册或者暴力...
"优化过的C#彩色验证码"是指使用C#编程语言实现的一种经过优化的彩色图像验证码。这个话题涵盖了几方面的技术,包括图像处理、随机数生成、颜色应用以及字符混淆等。 1. **C#编程语言**:C#是由微软开发的一种面向...
Java 彩色验证码的生成是Web开发中一个重要的安全机制,用于防止自动化程序(如机器人)非法操作,比如注册、登录等。在这个话题中,我们将深入探讨如何在Java中创建彩色且具有挑战性的验证码。 首先,验证码的核心...
.NET下的彩色验证码源代码主要涉及的是网络安全领域中的用户验证技术,特别是防止自动化程序(如机器人)非法操作的机制。验证码通常由随机生成的一串字符或数字组成,用户需要正确输入才能完成登录、注册等操作,...
### JSP 彩色验证码实现解析 #### 一、概述 在Web应用中,验证码是一种常用的用户身份验证机制,用于防止自动化的恶意攻击或垃圾邮件发送等行为。本篇文章将详细解析一个基于JSP技术实现的彩色验证码的具体实现...
本篇文章将详细介绍如何在JSP中实现彩色验证码,包括汉字和数字的生成。 首先,我们需要理解验证码的基本原理。验证码通常由随机生成的一串字符组成,这些字符可能是字母、数字或者汉字,它们被扭曲、旋转、加噪以...
在本实例中,我们关注的是一个基于Java实现的彩色验证码源码。Java是一种跨平台的编程语言,以其强大、灵活和易用性而闻名,特别适合开发这种类型的应用。 验证码的生成通常包括以下几个步骤: 1. **随机字符生成*...
3. **验证码实现步骤**: - **生成随机字符串**:首先,需要生成一个包含数字和字母的随机字符串。这通常通过随机数生成器和字符数组实现,可指定字符串长度。 - **创建图像**:使用GDI+(Graphics Device ...
验证码 制作彩色验证码