`

Java 验证码 图片验证码示例

阅读更多
package test.web.home.servlet;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.Random;
import javax.imageio.ImageIO;

public abstract class RandomGraphic
{
  private static int wordHeight = 10;
  private static int wordWidth = 15;

  private static int fontSize = 20;
  private static final int MAX_CHARCOUNT = 16;
  private static final int initypos = 5;
  private static final Color[] CHAR_COLOR = { Color.RED, Color.BLUE, Color.GREEN, Color.MAGENTA };

  public static String GRAPHIC_JPEG = "JPEG";

  public static String GRAPHIC_PNG = "PNG";

  public static String draw(String charValue, String graphicFormat, OutputStream out)
    throws Exception
  {
    int charCount = charValue.length();
    if ((charCount < 1) || (charCount > 16)) {
      throw new Exception("Invalid parameter charCount,charCount should between in 1 and 16");
    }

    int w = (charCount + 2) * wordWidth;
    int h = wordHeight * 3;

    BufferedImage bi = new BufferedImage(w, h, 5);
    Graphics2D g = bi.createGraphics();

    Color backColor = Color.WHITE;
    g.setBackground(backColor);
    g.fillRect(0, 0, w, h);

    g.setFont(new Font(null, 1, fontSize));

    for (int i = 0; i < charCount; i++) {
      String c = charValue.substring(i, i + 1);
      Color color = CHAR_COLOR[randomInt(0, CHAR_COLOR.length)];
      g.setColor(color);
      int xpos = (i + 1) * wordWidth;

      int ypos = randomInt(5 + wordHeight, 5 + wordHeight * 2);
      g.drawString(c, xpos, ypos);
    }
    g.dispose();
    bi.flush();

    ImageIO.write(bi, graphicFormat, out);

    out.close();
    return charValue;
  }

  public static String randNumber(int charCount)
  {
    String charValue = "";

    for (int i = 0; i < charCount; i++) {
      charValue = charValue + String.valueOf(randomInt(0, 10));
    }
    return charValue;
  }

  public static String randAlpha(int charCount) {
    String charValue = "";

    for (int i = 0; i < charCount; i++) {
      char c = (char)(randomInt(0, 26) + 97);
      charValue = charValue + String.valueOf(c);
    }
    return charValue;
  }

  protected static int randomInt(int from, int to)
  {
    Random r = new Random();
    return from + r.nextInt(to - from);
  }

  public static void main(String[] args)
    throws Exception
  {
    System.out.println(draw(randAlpha(4), GRAPHIC_PNG, new FileOutputStream("c:/myimg.png")));
  }
}

 

package test;

import test.LogProxy;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import test.web.boot.api.ModuleBaseServlet;
import test.web.utils.http.ResultCode;
import test.web.utils.http.ResultProxy;

public class AuthCode extends ModuleBaseServlet
{
  private static final long serialVersionUID = 1L;
  private LogProxy logg = LogProxy.getProxy(getClass().getName());

  public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException
  {
    try
    {
      String randomCode = RandomGraphic.randAlpha(4);
      this.logg.info("###> 【验证码】doGet==> randomCode:" + randomCode, new Object[0]);
      request.getSession().setAttribute("SESSION_KEY_AUTHCODE", randomCode);
      RandomGraphic.draw(randomCode, RandomGraphic.GRAPHIC_PNG, response.getOutputStream());
    } catch (Exception e) {
      e.printStackTrace();
      ResultProxy.getJSONResult().setCode(ResultCode.ERROR).send(response);
    }
  }
}

 

分享到:
评论

相关推荐

    验证码破解的方法,简单验证码破解java示例

    本篇文章将详细讨论验证码的基本原理,以及如何使用Java实现简单的验证码破解方法。请注意,了解验证码破解知识主要是为了提高网站安全意识,避免自身系统被攻击,而不是用于恶意破解他人系统。 验证码的类型主要有...

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

    源码提供了一个生成图片验证码的工具类,适用于各种需要验证码的场景,如用户注册、...生成的验证码图片背景透明,线条清晰,可轻松辨认。本源码包含了工具类源码及调用示例,可供开发者参考使用,集成到您的项目中。

    Java通用验证码及应用示例

    2. **Java验证码库**: 在Java中,有多个库可以帮助开发者创建验证码,例如 JCaptcha 和 Simple Captcha。这些库提供了丰富的选项来定制验证码的外观,包括字体、颜色、噪声线等。 3. **自定义验证码实现**: ...

    java 生成图片验证码

    在IT领域,验证码(CAPTCHA)是一...在提供的压缩包文件“图片验证码生成”中,可能包含了实现上述功能的源代码示例,你可以通过学习和理解这些代码,加深对Java生成图片验证码的理解,并根据实际需求进行调整和优化。

    java验证码生成类

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

    java 验证码 框架

    Java验证码框架是Web开发中用于安全验证的重要工具,主要...总的来说,Java验证码框架jc为J2EE应用提供了安全验证的解决方案,通过示例代码简化了开发流程,使得开发者能更专注于业务逻辑,而不是验证码的实现细节。

    java验证码组件Jcaptcha

    Java验证码组件Jcaptcha是用于生成安全、动态的图像验证码的工具,主要目的是为了防止自动化的机器人或恶意软件在Web应用程序中进行非法操作,如批量注册、登录等。它通过生成随机字符组合并扭曲图像背景来增加人眼...

    比较常见的Java验证码(解压导入MyEclipse即可)

    通过深入研究这个示例,你不仅可以掌握Java验证码的生成,还能了解到图形处理、会话管理等相关知识,对于提升自己的Java Web开发技能大有裨益。同时,这也是一个很好的实践项目,可以帮助你理解理论知识在实际应用中...

    httpClient连接https 获得验证码图片示例

    httpClient连接https 获得验证码图片示例 需要证书才能连接的那种 /* 本文所用开发工具 jak1.5.0_06 eclipse:ObjectWeb Lomboz lib: commons-codec-1.4.jar commons-logging-1.1.jar httpclient-4.0.3.jar ...

    Java 生成验证码示例

    本示例是关于如何在Java环境下创建一个简单的验证码生成器,并将其集成到JSP页面中进行展示和验证。 验证码的生成通常涉及以下几个关键步骤: 1. **随机字符生成**: - 验证码通常由一组随机的字母或数字组成,...

    java图片验证码源码

    这个简单的Java验证码源码示例涵盖了基础的图像处理和字符串随机生成。然而,实际应用中可能需要考虑更多高级特性,如字体变形、颜色渐变、噪点滤波等,以提高验证码的安全性和用户体验。在开发过程中,可以利用开源...

    Java验证码识别的例子

    这个Java验证码识别的例子提供了一个实战教程,让我们深入了解验证码识别的原理与实现方法。 验证码(CAPTCHA)的主要目的是防止自动化的机器人程序对网站进行恶意操作,例如批量注册、刷票等。而验证码识别技术则...

    java 生成动态gif 验证码

    在Java开发中,生成动态GIF验证码是一种常见的安全机制,用于防止自动机器人或者恶意脚本对网站进行非法操作。这种验证码通常包含随机生成的字母、数字或者符号,以动画的形式展示,用户需要输入看到的验证码才能...

    Java生成图片验证码

    下面是一个简单的示例,展示如何创建一个200x50像素的图片,并在上面绘制四个字符的验证码: ```java import javax.imageio.ImageIO; import java.awt.*; import java.awt.font.TextAttribute; import java.awt....

    Java生成算数运算中文图片验证码

    Java生成算数运算中文图片验证码的实现,结合了编程语言、图像处理和安全验证的多种技术,为用户提供了一种既安全又友好的验证方式。下面我们将深入探讨这个主题。 首先,验证码的核心是生成随机的算数运算表达式。...

    java 生成gif 图片验证码

    Java作为一款多用途的编程语言,提供了丰富的库和方法来生成包括GIF格式在内的图片验证码。下面将详细讨论如何在Java中创建GIF动态验证码。 首先,我们需要理解GIF图片验证码的基本构成。它通常包含随机生成的文字...

    java彩色验证码例子

    Java生成彩色验证码是一种常见的安全措施,用于防止自动化脚本或恶意机器人进行非法操作,例如注册、登录等。在Web开发中,JSP(JavaServer Pages)可以用来创建动态的网页内容,包括验证码图像。以下是对标题和描述...

    3个java登录验证码的例子全网最全

    首先,`web08.rar`可能包含了一个基于Web的登录验证码示例。Web验证码通常由服务器生成并显示在HTML页面上,用户需要输入图片或音频中显示的字符或数字。这个例子可能涵盖了以下知识点: 1. **Servlet**:用于处理...

    java 验证码代码

    总之,这个Java验证码代码示例展示了如何使用Servlet和基本的图像处理技术生成验证码图片,并提供了一种简单的验证机制。它对于防止自动化脚本或机器人滥用网站服务非常有用。在实际应用中,可能还需要考虑其他安全...

    java生成验证码demo

    这个"java生成验证码demo"提供了生成自定义验证码图片的方法,包括设置图片尺寸、验证码长度,以及添加各种视觉混淆元素,以增加机器识别的难度。 首先,我们要理解验证码的基本原理。它通常由一组随机生成的字母或...

Global site tag (gtag.js) - Google Analytics