`
ww4705
  • 浏览: 30206 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

图形验证码的生成与使用

    博客分类:
  • java
阅读更多
图形验证码的主要目的是为了增强的安全性,增加用户通过遍历所有可能性来破解密码的难度。
图形验证码的使用包括如下3部分:
l         图形验证码的生成;
l         在页面中的使用;
l         验证;
1、图形验证码的生成
假设在Servlet生成图形验证码,在JavaBean或者JSP中生成的基本过程是相同的。设计如下过程:
l         设置响应的文档类型;
l         生成随机码;
l         把随机码保存到session中;
l         生成图片;
l         把随机码画到内存图片上;
l         把内存图片发送到客户端;
1.1 设置响应的文档类型
在对用户进行响应的时候,需要设置文档类型,要生成图片文档类型可以设置为:image/gif。
在Servlet中的设置方式为:response.setContentType("image/gif");
如果在JSP页面中使用则需要使用:<%@ page contentType="image/gif"%>
1.2 生成随机码
可以根据各种随机数生成策略来生成,并且可以设置随机码有哪些字符组成以及随机码的长度。
本文给出的随机码字符是所有字母和数字。使用的随机码生成策略使用的是Random对象提供的。参考代码如下:
随机码字符列表:
   public static final char[] code = {'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',
                                    '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',
                                    '0','1','2','3','4',
                                    '5','6','7','8','9'};
生成随机码的代码:
     StringBuffer checkcode=new StringBuffer();

     // 每循环一次,生成一位
     for(int i=0;i<code_length;i++)
     {
        int generated=(new Random()).nextInt(62);
        checkcode.append(code[generated]);
     }
1.3 把随机码保存到session中
为了在用户提交验证码之后进行验证,需要保存生成的验证码,可以保存在session中。在Servlet中需要先获取session对象,然后再使用。
下面是参考代码:
     // 把生成的验证码保存到session中
     HttpSession   session=request.getSession(true);
     session.setAttribute("checkCode",checkcode.toString());
1.4 生成图片
使用BufferedImage类创建对象,然后使用画图对象画图。下面是参考代码:
     // 创建内存图片,参数为图片的大小以及类型
     BufferedImage   image
= new   BufferedImage(49,14,BufferedImage.TYPE_INT_RGB);
     // 得到Graphics句柄
     Graphics   g = image.getGraphics();
     // 设置画笔颜色
     // g.setColor(Color.yellow);
     // 画背景
     g.fillRect(0,1,49,12);
1.5 把随机码显示在图片上
参考下面的代码:
     // 设置字体色
     g.setColor(Color.black);
     // 画验证码
     g.drawString(checkcode.toString(),4,11);

     // 图象生效
     g.dispose();
1.6 把生成的图片发送到客户端
参考代码如下:
     ImageIO.write(image, "JPEG", response.getOutputStream());
这样就完成了动态图形验证码的生成。
2、在页面中使用图形码:
与使用其它图形的方式相同,使用<img src=”…”>标签。假设生成图片的Servlet的url-pattern值为checkcode,则在页面中加载图片的代码如下:
<img border=0 src="checkcode">
3、验证
获取用户输入的验证码,然后从session中获取保存的验证码,对比来确定是否相同,从而完成验证。
分享到:
评论

相关推荐

    图形验证码生成合集

    这个压缩包文件“图形验证码生成合集”集合了多种类型的Java实现的验证码生成器,包括数字计算验证码、中文验证码、简单验证码以及复杂条纹验证码,这些都为开发者提供了丰富的选择来增强网站或应用的安全性。...

    vue插件——使用canvas生成图形验证码

    总结一下,这个“vue插件——使用canvas生成图形验证码”结合了Vue.js的组件化和canvas的图形绘制能力,为Web应用提供了一种安全、可定制的图形验证码解决方案。它既保证了用户验证的安全性,又利用Vue.js的便利性...

    dotnet-HeiCaptcha一个netcore跨平台的图形验证码生成工具包

    标题中的"dotnet-HeiCaptcha"是一个专为.NET Core设计的图形验证码生成库,强调了其跨平台的特性。这意味着它不仅能在Windows系统上运行,还能在Linux或macOS等其他支持.NET Core的平台上工作。"HeiCaptcha"这个名字...

    java生成随机加减法的图形验证码

    本话题主要关注如何使用Java生成包含随机加减法问题的图形验证码。这种验证码不仅增加了安全性,还为用户提供了验证他们是否为人类的互动方式。 首先,`IdentifyingCode.java`可能是一个类,它代表验证码对象,包含...

    beego框架图形验证码实现

    【beego框架图形验证码实现】是使用Go语言开发的一个高效且功能丰富的图形验证码库,它为Web应用提供了安全的验证码生成服务。这个库的核心目的是为了防止自动化程序(如机器人)进行非法操作,如批量注册、恶意登录...

    Android生成图形验证码

    在Android平台上,生成图形验证码(CAPTCHA)是提高应用程序安全性的关键步骤,特别是在用户登录或注册过程中。图形验证码的主要目的是防止自动化的机器人程序或者恶意攻击者进行非法操作,如批量注册、恶意登录等。...

    c#生成图形验证码类

    c#编写的生成图形验证码的类,支持算式验证码和字符验证码。使用时先实例化类,就可以直接调用Image属性获得验证码图形,Text属性是验证码的文本,如果使用的是算式验证码,可以调用类的getCodeValue方法获取验证码...

    asp.net生成图形验证码

    本项目提供的"图形验证码生成_asp.net"文件可能包含了以下关键知识点: 1. **验证码生成算法**:首先,我们需要一个算法来生成随机的验证码字符串。这通常涉及到随机数生成器,选择字母、数字的组合,并确保一定的...

    C# 如何自动生成验证码(Web图形验证码生成示例),相信好多人有要用哦(源码)

    本文将详细介绍如何使用C#自动生成Web图形验证码,以及提供一个简单的5位数字验证码生成示例。 首先,理解验证码的基本概念:验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and...

    c#生成图形验证码 一图片的形式生成验证码

    在C#编程语言中,我们可以创建自己的图形验证码生成器。下面我们将详细探讨如何用C#来实现这一功能。 首先,我们需要引入必要的库。在C#中,我们通常会使用System.Drawing命名空间,因为它包含了创建和操作图像所需...

    【Python】图形验证码生成

    本教程将深入探讨如何使用Python来实现图形验证码的生成。 一、Python与图形验证码 Python作为一种功能强大的编程语言,因其简洁的语法和丰富的...希望这个教程对您在理解和实现Python图形验证码生成过程中有所帮助。

    (源码)基于SpringBoot的图形验证码生成系统.zip

    # 基于Spring Boot的图形验证码生成系统 ## 项目简介 本项目是一个基于Spring Boot框架的图形验证码生成系统,支持生成多种类型的验证码,包括静态图片验证码、GIF动画验证码、中文验证码和算术验证码。验证码可以...

    Android生成随机的图形验证码

    总的来说,理解和实现Android中的随机图形验证码生成,不仅涉及基本的绘图操作,还涉及到颜色、随机数生成等数学知识,以及Android UI组件和内存管理的理解。熟练掌握这一技能对于提高应用的安全性至关重要。

    VC++验证码生成Base64验证码png图片程序

    VC++验证码生成Base64验证码png图片程序,如何使用VC++生成验证码图片,输出Base64图片给网页调用

    Java Web开发之图形验证码的生成与使用方法

    在Java Web开发中,图形验证码...总的来说,Java Web开发中的图形验证码生成与使用涉及到多个Java类库和Web开发基础,如HTTP Session、图像处理和用户交互。理解并正确实施这些步骤对于构建安全的Web应用至关重要。

    php生成图形验证码实用.pdf

    图形验证码是指使用图像来表示验证码,用户需要输入图像中的字符以验证身份。 生成验证码文件 code.php code.php 文件是一个 PHP 脚本,用于生成图形验证码。该脚本定义了一个 `ImageCode` 类,该类具有以下属性:...

    图形验证码成功之后实现用户登录功能.zip

    1. 设计图形验证码生成器:创建一个算法或使用现成库来生成随机的、难以被机器识别的验证码图片。 2. 验证用户输入:将用户输入与服务器端保存的原始验证码进行比对,确认一致后进入下一步。 3. 发送短信:通过集成...

    js图形验证码,只要简单的复制粘贴 3步

    #### 二、图形验证码生成流程 ##### 1. JSP后端图形验证码生成 在给定的`image.jsp`文件中,我们看到了图形验证码的核心生成逻辑。此段代码通过以下步骤创建了一个随机的图形验证码: - 设置响应头以禁止浏览器...

    ASP图形验证码代码

    ASP图形验证码代码ASP图形验证码代码ASP图形验证码代码ASP图形验证码代码ASP图形验证码代码ASP图形验证码代码ASP图形验证码代码ASP图形验证码代码ASP图形验证码代码ASP图形验证码代码ASP图形验证码代码ASP图形验证码...

    java生成图形验证码 带详细注释 拷贝即用 兼容linux系统 含字体

    有没有发现最后生成了一串长的base64编码 把这一串编码放到img标签在前面加上"data:image/gif;base64,"是能直接使用的 ;base64,(你的base64编码)"/&gt; 验证码最佳宽高计算公式:字体大小和图片高度相等,图片宽度=...

Global site tag (gtag.js) - Google Analytics