`
u177734357
  • 浏览: 16043 次
  • 性别: 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项目中,为你的应用程序添加一道防线。 验证码生成通常包括以下几个关键步骤: 1. **...

    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`。这...

    图形验证码工具类.zip

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

    验证码工具类.zip

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

    Java图片验证码生成工具类

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

    一款自用的PHP验证码工具类|kcaptcha.zip

    本篇文章将详细讲解基于PHP的验证码工具类——KCAPTCHA,以及如何使用它来增强网站的安全性。 首先,验证码(CAPTCHA)全称为“Completely Automated Public Turing test to tell Computers and Humans Apart”,即...

    Java开发工具类

    Class类工具 \Cookie工具类 \excel读取 工具类\Java如何生成验证码图片和点击刷新验证码\java获取当前月第一天和最后一天,上个月第一天和最后一天\java实现ftp文件的上传与下载\Json工具类 - JsonUtils.java\JS...

    30个java工具类

    [工具类] 验证码img .jsp.txt [工具类] Java中计算任意两个日期之间的工作天数 .java.txt [工具类] java抓取网页 .java.txt [工具类] MD5 .java.txt [工具类] MD5强化版 .java.txt [工具类] MD5超强化版 .java.txt ...

Global site tag (gtag.js) - Google Analytics