`
u177734357
  • 浏览: 16254 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java验证码工具类

阅读更多
package cn.rx.oamp.util;

import java.awt.Color;   
import java.awt.Font;   
import java.awt.Graphics;   
import java.awt.image.BufferedImage;   
import java.util.Random;   
  
import javax.imageio.ImageIO;   
import javax.servlet.ServletOutputStream;   
import javax.servlet.http.HttpServletRequest;   
import javax.servlet.http.HttpServletResponse;   
  
public final class ImageCode {   
  
    private static final Random random = new Random();   
  
    private static final Font[] CODEFONT = { new Font("宋体", Font.BOLD, 25), new Font("宋体", Font.BOLD, 25), new Font("宋体", Font.BOLD, 25),   
            new Font("宋体", Font.BOLD, 25) };   
    private static final Color[] FONTCOLOR = { Color.ORANGE, Color.RED, Color.PINK, Color.BLUE, Color.GREEN };   
    private static final Color[] BGCOLOR = { Color.WHITE, Color.GREEN };   
    private static final Color LINECOLOR = new Color(242, 234, 15);   
    private static final String[] CODE = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",   
            "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };   
    private static StringBuffer CONDENUMBER = null;   
    private static final int WIDTH = 100, HEIGHT = 25;   
  
    public final String image(HttpServletRequest request, HttpServletResponse response) {   
        CONDENUMBER = new StringBuffer();   
        BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);   
        Graphics g = image.getGraphics();   
        g.setColor(BGCOLOR[random.nextInt(1)]);   
        g.fillRect(0, 0, WIDTH, HEIGHT);   
        for (int i = 0; i < 4; i++) {   
            drawCode(g, i);   
        }   
        drawNoise(g, 8);   
        g.setColor(Color.gray);   
        g.drawRect(0, 0, WIDTH - 1, HEIGHT - 1);   
        g.dispose();   
        response.setHeader("Pragma", "No-cache");   
        response.setHeader("Cache-Control", "no-cache");   
        response.setDateHeader("Expires", 0);   
        response.setContentType("image/png");   
        ServletOutputStream sos = null;   
        try {   
            sos = response.getOutputStream();   
            ImageIO.write(image, "png", sos);   
            sos.flush();   
            sos.close();   
        } catch (Exception e) {   
            e.printStackTrace();   
            return null;   
        }   
        return CONDENUMBER.toString();   
    }   
  
    private final void drawCode(Graphics graphics, int i) {   
        String number = CODE[random.nextInt(36)];   
        graphics.setFont(CODEFONT[random.nextInt(4)]);   
        graphics.setColor(FONTCOLOR[random.nextInt(5)]);   
        graphics.drawString(number, 10 + i * 20, 20);   
        CONDENUMBER.append(number);   
    }   
  
    private final void drawNoise(Graphics graphics, int lineNumber) {   
        graphics.setColor(LINECOLOR);   
        int pointX1, pointY1, pointX2, pointY2;   
        for (int i = 0; i < lineNumber; i++) {   
            pointX1 = 1 + (int) (Math.random() * WIDTH);   
            pointY1 = 1 + (int) (Math.random() * HEIGHT);   
            pointX2 = 1 + (int) (Math.random() * WIDTH);   
            pointY2 = 1 + (int) (Math.random() * HEIGHT);   
            graphics.drawLine(pointX1, pointY1, pointX2, pointY2);   
        }   
    }   
  
} 

 

分享到:
评论

相关推荐

    java 验证码工具类 java 验证码工具类 java 验证码工具类

    java 验证码工具类 java 验证码工具类 java 验证码工具类java 验证码工具类 java 验证码工具类 java 验证码工具类java 验证码工具类 java 验证码工具类 java 验证码工具类java 验证码工具类 java 验证码工具类 java ...

    纯Java验证码工具类

    "纯Java验证码工具类" 提供了一种简便的方法来生成这种安全机制,无需依赖其他语言或库。这个工具类可以被轻松地集成到任何Java项目中,为你的应用程序添加一道防线。 验证码生成通常包括以下几个关键步骤: 1. **...

    java 验证码工具类 java 验证码工具类

    java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码...

    Java 验证码工具类

    可以通过调用此工具类来轻松实现验证码

    验证码生成工具类

    在实际应用中,验证码工具类通常会封装这些功能,提供简单的API供其他部分代码调用。例如,可能有一个`generate()`方法用于生成验证码,一个`getImageBytes()`方法用于获取验证码图像的字节数组,以及一个`validate...

    Java验证码工具类-带Main方法独立运行

    Java验证码工具类-带Main方法可以独立运行,无需Jar依赖,只需要Java环境 一个工具类就可以生成漂亮的验证码 String verifyCode = generateVerifyCode(4); File file = new File(dir, verifyCode + ".jpg"); ...

    CaptchaUtil_Java验证码工具类_CaptchaUtil_

    CaptchaUtil 是 Java 语言封装的一个用于生成验证码的工具类,支持多种字体、干扰线、圈圈等作为背景,方便实用。

    Java生成图片验证码工具类源码

    该工具类使用随机字符生成验证码,并支持自定义验证码长度和字体样式。生成的验证码图片背景透明,线条清晰,可轻松辨认。本源码包含了工具类源码及调用示例,可供开发者参考使用,集成到您的项目中。

    java生成图片的验证码工具类及其使用

    java生成验证码的工具类,这个现在有依赖可以直接引入调用,但这个工具类没有引入依赖,大家也容易看懂代码,理解其含义。也可直接去工具类中调整生成验证码的宽度、高度、颜色、背景颜色、生成的随机数数量、干扰线...

    ValidateCodeUtils.java随机生成验证码工具类 长度为4位或者6位

    随机生成验证码工具类 长度为4位或者6位

    Java图片验证码工具类

    Java图片验证码工具类是一种在Web应用中用于防止恶意自动化操作(如机器人)的常用安全机制。它通过生成随机的字符序列并将其显示为图片来工作,用户需要输入看到的字符才能完成验证。以下是对这个Java工具类的详细...

    java验证工具类

    Java验证码工具类是一种在Web应用中广泛使用的组件,主要用于用户身份验证,防止恶意自动化操作,如机器人注册、投票刷票等。在这个Java开发的验证码工具类中,它提供了生成和验证验证码的功能,同时包含了文档说明...

    Java生成图形验证码工具类

    主要介绍了Java生成图形验证码工具类,本文思路明确介绍的非常详细,需要的朋友可以参考下

    java工具类——验证码(VerifyCode)

    综上所述,Java验证码工具类的实现涉及到图像处理、随机数生成、Web交互等多个方面,是保障Web应用安全性的重要组成部分。通过合理的实现和不断优化,可以有效防止自动化攻击,保护用户的账户安全。

    java验证码生成类

    这篇博客文章“java验证码生成类”提供了一个简单的示例,下面我们将深入探讨验证码生成的相关知识点。 首先,验证码的基本原理是生成一段随机的、难以由机器识别的文字或数字序列,然后要求用户在限定时间内输入这...

    验证码工具类.rar

    本项目提供的"验证码工具类.rar"是一个Java实现的简单验证码生成器,能够生成四位数字的随机验证码,并具有字体和颜色的随机性,以及添加干扰线以增加机器识别的难度。 首先,我们来看核心类`VerifyCode.java`。这...

    java实现拖拉验证码工具类

    实现功能:传入路径,返回base64图片编码(原图抠图及滑块图)、图片坐标值、唯一id; 使用方法:1、将jar包导入... 2、调用工具类 ImageVo imageVo = GraphicCodeUtil.generate("E:\\data\\3322.jpg",width,height);

    图形验证码工具类.zip

    java生成图形验证码工具类,很实用的东西

    验证码工具类.zip

    本资源提供了两种实现方式:基于Servlet和Struts2(Action)的验证码工具类。以下是对这两个版本的验证码工具类的详细解释。 ### Servlet版验证码工具类 1. **验证码生成**: Servlet版本的验证码工具类通常会...

    Java图片验证码生成工具类

    好看的图片验证码,包含干扰线、噪点、扭曲图片等。。

Global site tag (gtag.js) - Google Analytics