`
dengminhui
  • 浏览: 168028 次
  • 来自: ...
社区版块
存档分类
最新评论

Java实现CheckCode

阅读更多
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;

import javax.imageio.ImageIO;

public class CheckCode {

    // // 设置页面不缓存
    // response.setHeader("Pragma", "No-cache");
    // response.setHeader("Cache-Control", "no-cache");
    // response.setDateHeader("Expires", 0);

    // 在内存中创建图象

    public static void main(String[] args) throws IOException {

        // System.out.println("create ramdom image");
        // 配置验证码显示方式(位数,含字母)
        int imageWidth = 5;
        boolean hasChar = true;

        int width = imageWidth * 15, height = 20;
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

        // 获取图形上下文
        Graphics g = image.getGraphics();

        // 生成随机类
        Random random = new Random();

        // 设定背景色
        g.setColor(new Image().getRandColor(200, 250));
        g.fillRect(0, 0, width, height);

        // 设定字体
        g.setFont(new Font("Times New Roman", Font.PLAIN, 18));

        // 画边框
        g.setColor(new Color(height));
        g.drawRect(0, 0, width - 1, height - 1);

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

        // 取随机产生的认证码(imageWidth位数字)
        String sRand = "";
        for (int i = 0; i < imageWidth; i++) {
            String rand;
            if (i % 2 == 0 && hasChar) {

                rand = String.valueOf((char) (((random.nextInt(99)) % 2 == 0 ? 65 : 97) + random.nextInt(26)));
                sRand += rand;
            } else {
                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
        // request.getSession().setAttribute("rand", sRand);
        //
        // 图象生效
        // g.dispose();
        //
        // // // 输出图象到页面
        // // ImageIO.write(image, "JPEG", response.getOutputStream());
        // // return null;
        ImageIO.write(image, "jpeg", new File("d:\\helloImage.jpeg"));

    }
}

class Image {

    /**
     * <p>
     * Discription:[给定范围获得随机颜色]
     * </p>
     * 
     * @param fc
     * @param bc
     * @return
     * @author:[twssy] http://hi.baidu.com/twssy/ http://www.wolaodao.cn
     * @update:[日期YYYY-MM-DD] [twssy][变更描述]
     */
    public 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);
    }
}

 

 

 

 

参考地址:http://hi.baidu.com/twssy/blog/item/ce3425d18add833b9a5027ae.html

分享到:
评论

相关推荐

    jsp_checkCode.rar_java CheckCode

    【标签】"java_checkcode_" 指明了这个功能的核心是Java实现的校验码。标签可能用于搜索或分类,便于其他开发者找到与Java校验码相关的资源。 【压缩包子文件的文件名称列表】中的"www.pudn.com.txt"可能是一个说明...

    Checkcode.java

    可以使用此代码来实现注册或登录时动态生成验证码,字符范围是a-zA-Z以及从0到9,随机生成四个字符,并且有图形,直线等作为扰乱。

    java实现的18位身份证格式验证算法

    以上就是Java实现18位身份证格式验证算法的主要知识点,通过这些步骤,可以有效地检查输入的身份证号码是否符合中国的身份证规则。在开发过程中,应结合实际情况,考虑异常处理和性能优化,以提供更稳定和高效的验证...

    JAVA实现各种验证码的源代码

    验证码在信息技术领域中扮演着重要的...总的来说,JAVA实现验证码的源代码是一个很好的学习资源,不仅能够帮助开发者理解图形处理、随机数生成以及网络通信等相关知识,还能够提升他们在实际项目中解决安全问题的能力。

    使用google身份验证器实现动态密码验证java demo

    3. **Java实现步骤** - **服务端配置** - 生成密钥对:使用Java的GoogleAuthenticatorKeyGenerator类生成一个密钥,这将用于服务端存储。 - 分享密钥:将生成的密钥编码成QR码,用户可以通过扫描这个二维码在他们...

    java实现短信验证码5分钟有效时间

    java实现短信验证码5分钟有效时间 java实现短信验证码5分钟有效时间是指在java语言中实现短信验证码的功能,每个验证码的有效时间为5分钟。这种实现方式可以在电商、银行、社交媒体等领域广泛应用,例如,在用户...

    java随机产生四位验证码(相邻码不重复)两种算法实现

    public static char[] checkcode(char[] chr1) { char[] chr = "0123456789abcdefhijkmnpqrstuvwxyABCDEFGHJKLMNPQRSTUVWXY".toCharArray(); Random r = new Random(); int n = chr.length; boolean[] used = ...

    java实现验证码小程序

    在Java中实现验证码小程序涉及到多个关键步骤和技术,主要包括生成随机字符串、创建图像、绘制...以上就是Java实现验证码小程序的主要技术点和步骤。通过这些步骤,我们能够创建一个安全且用户体验良好的验证码系统。

    java表单的验证

    remote: "checkCode.action" } }, messages: { email: { required: "请输入", email: "请输入正确的Email格式" }, nickname: { required: "必须输入", minlength: "至少4个字符", maxlength: "不能超过...

    javaweb验证码实现demo

    这个“javaweb验证码实现demo”很可能是为了展示如何在Java Web应用中集成验证码功能。 验证码的实现主要包括以下几个关键步骤: 1. **生成随机验证码**:首先,我们需要创建一个可以生成随机字符串的方法。这个...

    最新数据验证工具类java,身份证、手机号、qq...

    在Java中,可以编写一个工具类来实现身份证号码的有效性检查,例如通过正则表达式验证长度和结构,以及计算校验码是否正确。 手机号码验证则涵盖了中国三大运营商——中国移动、中国联通和中国电信的号码。此外,还...

    java验证码/servlet

    在这个主题中,“java验证码/servlet”指的是使用Java语言和Servlet技术来实现验证码功能。下面将详细介绍这个主题中的相关知识点。 1. **验证码的原理**: 验证码的主要目标是区分人类用户和计算机程序。它通常...

    checkCode:识别验证码

    Java作为常用编程语言,拥有丰富的机器学习库,如Weka、MLlib(Spark的一部分)和SMO(Sequential Minimal Optimization,SVM的一种优化算法实现)等,可以用来实现SVM验证码识别。 总结来说,"checkCode"项目展示...

    java验证码技术

    该Java类`CheckCode`继承自`HttpServlet`,主要实现了`doGet`和`doPost`方法,用于生成并返回验证码图片。下面对关键部分进行详细解读: ##### 1. `doPost` 方法 ```java public void doPost(HttpServletRequest ...

    java强大的动态验证码

    本文档将深入解析一个Java项目中的动态验证码实现方法,该方法利用Java后端技术生成验证码图片,并通过JavaScript从前端调用这些功能,以确保系统的安全性与用户体验。 #### 二、关键技术点 ##### 2.1 代码结构与...

    Java的项目实例学习

    Java的项目实例学习 本项目是个人的一些java项目练习源码,分享给大家,希望可以和大家一起进步! Java项目实例 swagger2-boot-starter ...checkcode Java 制作验证码 IMOOCSpider 简易网络爬虫

    一些java项目练习源码,分享给大家,希望可以和大家一起进步

    java项目练习源码,分享给大家,希望可以和大家一起进步! Java项目实例 swagger2-boot-starter SpringBoot-Shiro 秒杀业务 Woss2.0 电信采集系统 ...checkcode Java 制作验证码 IMOOCSpider 简易网络爬虫

    验证码校验servlet实现

    在这个imooc课程中,"checkcode"可能是生成和校验验证码的Servlet类名或者是相关的文件夹,包含用于生成验证码的Java源代码和可能的配置文件。学习者需要理解Servlet的工作原理,以及如何在Java中生成和操作图像,...

    【原创】Strtus实现验证码

    首先,我们需要创建一个CheckCode类,这是`CheckCode.java`文件的核心。这个类将生成并存储验证码的信息,包括验证码的图像和实际值。验证码的生成通常涉及以下步骤: 1. **随机生成验证码值**:使用`java.util....

    常用的验证码的各种代码

    本文档主要介绍两种常见的验证码实现方式:一种是基于JSP的验证码生成方法,另一种则是基于Java的验证码生成逻辑。这两种方式均能有效防止自动化工具对网站进行恶意操作,增强系统的安全性。 #### JSP 实现验证码 ...

Global site tag (gtag.js) - Google Analytics