`
liushibo
  • 浏览: 44062 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

验证码的使用

阅读更多
验证码文件image.jsp
<%@ page contentType="image/jpeg; charset=utf-8" import="java.awt.*,
java.awt.image.*,java.util.*,javax.imageio.*" %>
<%!
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);
        }
%>
<%
//设置页面不缓存
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);

// 获取图形上下文
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(new Color());
//g.drawRect(0,0,width-1,height-1);

// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
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);
}

// 取随机产生的认证码(4位数字)
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
session.setAttribute("rand",sRand);

// 图象生效
g.dispose();

// 输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());
out.clear();
out = pageContext.pushBody();

%>



点击刷新验证码

<img id="Image1" src="image.jsp" style="cursor:pointer" onmouseup="RefreshImage()" alt="点击重刷新"/>

<script language ="javascript" type="text/javascript" >
        function RefreshImage()
        {
            var el =document.getElementById("Image1");
            el.src=el.src+'?';//这个特别重要
        }
     </script>

分享到:
评论

相关推荐

    基于SSM实现的注册登录系统。验证码使用jcaptcha,发送邮件使用JEmail.zip

    验证码使用jcaptcha,发送邮件使用JEmail 基于SSM实现的注册登录系统。验证码使用jcaptcha,发送邮件使用JEmail 基于SSM实现的注册登录系统。验证码使用jcaptcha,发送邮件使用JEmail 基于SSM实现的注册登录系统。...

    谷歌验证码使用工具——kaptcha-2.3.2

    【谷歌验证码使用工具——kaptcha-2.3.2】是一款基于Java的开源验证码生成库,主要用于网站的身份验证,防止自动化的机器人或者恶意攻击者进行非法操作。kaptcha这个名字是"CAPTCHA"(Completely Automated Public ...

    验证码使用的demo

    验证码使用的demo,可以作为项目使用,供参考

    12306验证码怎么用?12306火车票订票网站图片验证码使用教程.docx

    1. **验证码使用步骤** - **第一步:** 当你需要登录12306网站或进行购票操作时,系统可能会要求你完成验证码验证。你会看到一个带有“点此开始验证”链接的验证码图片。 - **第二步:** 点击这个链接,会出现...

    12306火车票订票网站图片验证码使用教程.docx

    以下是对图片验证码使用的详细步骤和相关知识点的说明: 1. **验证码识别**:在首次进入12306网站时,你可能会遇到一个带有验证码的页面,通常显示为一组不规则排列的图片,每个图片代表一个特定的物体或概念。...

    验证码使用jar包导入即用

    本篇文章将详细讲解如何在Java项目中使用jar包实现验证码功能。 首先,你需要下载验证码相关的jar包,这通常包含了生成和验证验证码的核心类。在提供的压缩包文件中,可能包含了一些必要的库文件,比如`...

    自制ASP.NET C#中文验证码 使用DLL和纯代码二种对比

    自制ASP.NET C#中文验证码 使用DLL和纯代码二种对比 DLL使用WEBXML提供的产生随机中文字符

    短信验证码使用手册1

    在本文中,我们将深入探讨短信验证码的使用流程,特别是如何在织梦内容管理系统(DedeCMS)中集成互亿无线的短信验证码服务。 首先,要使用互亿无线的短信验证码服务,你需要在他们的官方网站(www.ihuyi.com)上...

    图形验证码生成合集

    2. **中文验证码**:与常见的字母和数字验证码不同,中文验证码使用汉字,增加了破解的难度,因为需要识别和理解汉字,这对于非中文环境的机器人来说非常困难。在处理中文网站时,使用中文验证码可以提高安全性。 3...

    中文验证码.zip

    1. **字符库**:验证码使用的中文字符集合,可能包含常用汉字和一些生僻字,以增加识别难度。 2. **生成逻辑**:生成验证码的算法,可能涉及到随机选择字符、组合字符、扭曲图像、添加噪声等步骤,以防止被机器自动...

    tessnet2_32及语言包和验证码使用方法

    1. 加载图像:使用 tessnet2_32 提供的 API 加载包含验证码的图像。 2. 初始化 OCR 引擎:设置语言包,例如 `engine.Init("data", "chi_sim")` 对应于简体中文。 3. 进行识别:调用 `engine.Recognize(image)` 进行...

    易语言闭关验证码使用例程源码,易语言闭关验证码1.00

    易语言闭关验证码1.00源码,闭关验证码1.00,创建位图,取画布句柄,取位图句柄,取宽度,取高度,置画笔属性,置实色画刷,置交叉线画刷,移动到,画直线到,画多义线点数组,画多义线横纵数组,画多边形点数组,画多边形横纵数组,...

    26种ASP验证码代码

    6. **字符集定义**:可以自定义验证码使用的字符集,包括英文大小写字母、数字,甚至中文字符,这会影响验证码的复杂性和安全性。 7. **错误处理**:当用户输入的验证码不正确时,需要有适当的错误处理机制,例如...

    验证码生成

    4. **一次性**:验证码使用后即废,不允许重复使用,防止被截获并滥用。 常见的验证码类型有: - **图像验证码**:最传统的形式,用户需识别并输入图片中的字符。图片通常经过扭曲、模糊处理,有的还会加入干扰线...

    PHP验证码(4位数字)

    2. **验证码使用.txt**:这个文件可能是包含验证码的使用示例或者说明文档,指导开发者如何在实际项目中集成验证码。可能包含以下内容: - **HTML表单**:在HTML表单中添加一个隐藏字段(如`session_id`)用于存储...

    NodeJs - Native实现短信验证码注册登录完整示例:NodeJs - Native.js和附件说明

    4. **验证验证码**:`Native.js`模块应有验证功能,比较用户输入的验证码和服务器保存的验证码是否一致,同时考虑验证码的有效期,防止过期验证码使用。 5. **注册/登录处理**:如果验证码验证通过,根据业务逻辑...

    制作网站常用--四位彩色验证码

    3. **验证码使用说明**:`验证码说明.doc` 文件很可能是详细解释如何集成和使用这个四位彩色验证码的文档。通常,这样的说明会涵盖以下几个方面: - **生成器设置**:如何配置验证码生成器,包括字符集的选择(字母...

    Python+OpenCV验证码识别系统

    本研究的主要目的是开发一个基于Python和OpenCV的验证码识别系统,并提供相应的源码和...分类器训练:使用机器学习算法,如支持向量机(SVM)、卷积神经网络(CNN)等,对提取的特征进行训练,建立验证码的分类器模型。

    高效的验证码识别技术与验证码分类思想

    #### 一、验证码使用现状 目前,验证码已成为各大网站尤其是论坛类网站的标准配置之一。据统计,国内排名前100名的论坛中超过60%采用了验证码技术。除了论坛外,电子邮件类网站也会使用验证码技术来预防垃圾邮件的...

Global site tag (gtag.js) - Google Analytics