`
wuxw920
  • 浏览: 31455 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

java实现简单验证码

阅读更多
之前有很多刚到公司的人问我在项目中使用的验证码的问题,都没有做出详细的解答,今天借着晚上空闲自己搞了个小例子给大家希望大家看的明白。
package com.kevin.common.util;  
  
import java.awt.Color;  
import java.awt.Font;  
import java.awt.Graphics;  
import java.awt.image.BufferedImage;  
import java.io.IOException;  
import java.io.OutputStream;  
import java.util.Random;  
  
import javax.imageio.ImageIO;  
  
public class Image {  
      
    //验证码图片中可以出现的字符集,可根据需要修改  
    private char mapTable[]={  
            'a','b','c','d','e','h',  
            'j','k','m','n','p','q',  
            'r','s','t','u','v','w',  
            'x','y','z','0','2','3',  
            '4','5','6','7','8','9'  
    };  
      
    public String getCertPic(int width, int height,OutputStream os) {  
        if(width<=0) {  
            width=60;  
        }  
        if(height<=0) {  
            height=20;  
        }  
          
        BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);  
        //获取图形上下文  
        Graphics g = image.getGraphics();  
        //设定背景颜色  
        g.setColor(new Color(0xDCDCDC));  
        g.fillRect(0, 0, width, height);  
        //画边框  
        g.setColor(Color.black);  
        g.drawRect(0, 0, width-1, height-1);  
        //随机产生的验证码  
        String strEnsure="";  
        //4代表4位验证码,如果要生成等多位的验证码 ,则加大数值  
          
        for(int i=0; i<4; i++) {  
            strEnsure += mapTable[(int)(mapTable.length*Math.random())];  
        }  
        //将验证码显示在图像中,如果要生成更多位的验证码,增加drawString语句  
        g.setColor(Color.black);  
        g.setFont(new Font("Atlantic Inline", Font.PLAIN,18));  
        String str = strEnsure.substring(0, 1);  
        g.drawString(str, 8, 17);  
         str = strEnsure.substring(1, 2);  
         g.drawString(str, 20, 15);  
         str = strEnsure.substring(2, 3);  
         g.drawString(str, 35, 18);  
         str = strEnsure.substring(3, 4);  
         g.drawString(str, 45, 15);  
         //随机产生10个干扰点  
           
         Random random = new Random();  
         for(int i=0; i<10; i++ ) {  
             int x = random.nextInt(width);  
             int y = random.nextInt(height);  
             g.drawOval(x, y, 1, 1);  
         }  
         g.dispose();//释放图形上下文  
         try{
             ImageIO.write(image, "JPEG", os);//输出图像到页面
         }catch(IOException e) {  
             return "";  
         }  
        return strEnsure;  
    }  
}

测试通过。
很晚了,要休息了。有什么问题请即使留言给我。
分享到:
评论

相关推荐

    java实现的简单验证码

    用java实现的简单验证码程序,仅仅实现了随机文字,而且只是数字,未加入背景图片和干扰线

    JAVA实现随机图片验证码简单方法

    JAVA实现随机图片验证码简单方法.rtf

    Java实现点击文字验证码与拖动/滑动图片验证码(源码+demo+单元测试+实现思路)

    3.1.JAVA掌握AWT的BufferedImage、Graphics2D、Font;Redis;图片生成随机位置 随机中文文字、随机抠图、拼图都只需要用到BufferedImage和Graphics2D。 3.2.前端熟悉点击事件,根据点击事件的坐标位置、图片的位置...

    java实现简单验证码生成

    Java 实现简单验证码生成 Java 实现简单验证码生成是指通过 Java 语言生成一个简单的验证码图片,用于验证用户的身份。下面是关于 Java 实现简单验证码生成的知识点: 1. 验证码生成原理 验证码生成是通过随机...

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

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

    用JAVA实现验证码的绘制

    通过以上步骤,我们就可以在Java中实现一个简单的验证码绘制功能。当然,实际应用中可能还需要考虑其他因素,如性能优化、字符集的多样性和复杂度平衡、防止OCR破解等。在开发过程中,可以参考开源的验证码库,如...

    java用servlet实现登陆验证码

    Java使用Servlet实现登录验证码涉及到的是Web开发中的安全性与用户体验部分。验证码是一种常用的安全机制,用于防止自动化的机器人或恶意程序进行非法操作,如批量注册、恶意登录等。在这个例子中,我们将探讨两种...

    java实现验证码

    本文将深入探讨如何使用Java来创建一个简单的图形验证码。 首先,我们需要了解验证码的基本原理。验证码通常包含一串随机生成的字符,这些字符可能是字母、数字或者两者的组合,设计得难以被计算机程序自动识别,但...

    java实现汉字验证码

    今天整理了一个java实现的汉字输入验证码 主要包含两个类,一个是生成验证码,一个是判断验证码输入是否正确 实现原理非常简单,将汉字和干扰线生成图片并将汉字保存到session,前台获取每次生成验证码图片并用...

    Java简单验证码识别(附源码)

    本文将详细讲解Java环境下实现验证码识别的基本原理和步骤,并结合提供的源码进行深入解析。 首先,验证码的主要目的是为了防止自动化的机器人程序进行非法操作,例如批量注册、恶意登录等。验证码通常由一串随机...

    JAVA实现网站验证码功能demo(servlet)

    本篇文章将详细讲解如何使用Java的Servlet技术来实现一个简单的网站验证码功能。 首先,我们需要理解Servlet。Servlet是Java提供的一种服务器端编程接口,用于扩展Web服务器的功能。它能够接收HTTP请求并生成HTTP...

    java实现动态验证码的效果

    在这个过程中,我们将探讨如何使用Java语言来创建一个简单的动态验证码系统,主要包括以下几个关键知识点: 1. **图形库的使用**:在Java中,我们通常使用`java.awt`和`javax.swing`包来处理图形。这两个包提供了...

    java 实现验证码(servlet+jsp)

    在Java Web开发中,我们可以使用Servlet和JSP来实现一个简单的图形验证码。以下将详细介绍如何利用这两个技术进行验证码的实现。 首先,理解验证码的基本原理:验证码是一种通过图像显示随机字符或数字的方式,用户...

    java实现验证码代码

    Java作为一种广泛使用的编程语言,具有丰富的库和工具支持,使得验证码的实现变得相对简单。 验证码通常由一串随机字符组成,这些字符可以是数字、字母或其他特殊符号,它们被扭曲、旋转或者添加噪声,以增加机器...

    java发送手机短信验证码

    在这个简单的示例中,我们将会探讨如何在Java环境中实现这一功能。 首先,我们需要理解验证码的核心原理。验证码通常由一串随机生成的数字或字母组成,它通过网络发送到用户的手机,用户需要在应用程序中输入接收到...

    Java验证码实现源码

    要实现一个简单的Java验证码,我们需要以下步骤: 1. **生成随机字符串**:首先,我们需要生成一个随机的字符串,这可以通过Java的`Random`类和`StringBuilder`类配合实现。可以设置字符串的长度和包含的字符集(如...

    JAVA和HTML5实现的多种验证码实现

    首先,我们来看JAVA实现的验证码。JAVA作为一种广泛使用的后端编程语言,具有丰富的库和工具来创建各种类型的验证码。教程中提到的七种JAVA验证码可能包括: 1. 图片验证码:这种验证码通过生成随机的字符或数字...

    java实现多种验证码

    本教程将深入探讨如何使用Java语言和kaptcha包来实现不同类型的验证码,包括字符与数字混合的验证码、中文验证码以及算术运算式的验证码。 首先,kaptcha是一个强大的开源验证码生成库,它提供了丰富的配置选项,...

    java web加法验证码实例

    在Java Web开发中,验证码是一种常见的安全机制,用于防止自动化的机器人或恶意用户进行非法操作。本实例将探讨如何使用简单的Servlet生成加法验证码,并将其整合到Struts2、SSH2(Spring、Struts2、Hibernate)和...

    java实现验证码产生功能

    通过以上步骤,我们可以实现一个简单的Java JSP验证码功能。这个过程涉及到Java基础、图像处理、HTTP会话管理等多个方面,是Web开发中常见且重要的安全机制。在实际应用中,可以根据项目需求进行定制和扩展,例如...

Global site tag (gtag.js) - Google Analytics