`

java 验证码

    博客分类:
  • java
阅读更多
public class RandomCaptchaGenerator {

	// 随即生成包含验证码的字符串

	public static String random( ) {
	
		// 因为o0,l1很难区分,所以,去掉o,l,y,v,0,1
		String str = "";
		str = "23456789abcdefghijkmnpqrstuwxzh";// 初始化种子

		return RandomStringUtils.random(6, str);// 返回length位的字符串

	}

	/**
	 * 根据要求的数字生成图片,背景为白色,字体大小16,字体颜色黑色粗体
	 * 
	 * @param num
	 *            要生成的字符
	 * @param out
	 *            输出流

	 * @throws IOException
	 */
	public static void createImage(String num, OutputStream out) throws IOException {
		if (num.getBytes().length > 6) {
			throw new IllegalArgumentException(
					"The length of param char cannot exceed 6.");
		}
		// 设定宽度和高度

		int width = 80;

		int height = 30;
		// 在内存中创建图象
		BufferedImage bi = new BufferedImage(width, height,
				BufferedImage.TYPE_INT_RGB);
		// 获取图形上下文

		Graphics2D g = (Graphics2D) bi.getGraphics();
		// 画边框

		java.util.Random random = new java.util.Random();
		g.setColor(Color.white);
		g.fillRect(0, 0, width, height);
		// 设置字体
		Font mFont = new Font("Tahoma", Font.BOLD, 16);
		g.setFont(mFont);
		g.setColor(Color.BLACK);// 设置字体颜色
		// 画认证码,每个认证码在不同的水平位置

		String str1[] = new String[6];
		for (int i = 0; i < str1.length; i++) {
			str1[i] = num.substring(i, i + 1);
			int w = 0;
			int x = (i + 1) % 3;

			// 随即生成验证码字符的水平偏移量

			if (x == random.nextInt(3)) {
				w = 19 - random.nextInt(7);
			} else {
				w = 19 + random.nextInt(7);
			}

			// 随即生成颜色
			Color color1 = new Color(random.nextInt(180), random.nextInt(180),
					random.nextInt(180));
			g.setColor(color1);
			g.drawString(str1[i], 12 * i + 4, w);
		}

		// 随机产生干扰点,并用不同的颜色表示,使图象中的认证码不易被其它程序探测到
		for (int i = 0; i < 100; i++) {
			int x = random.nextInt(width);
			int y = random.nextInt(height);
			Color color1 = new Color(random.nextInt(255), random.nextInt(255),
					random.nextInt(255));
			g.setColor(color1); // 随即画各种颜色的点

			g.drawOval(x, y, 0, 0);
		}
		// 画干扰线
		for (int i = 0; i < 0; i++) {
			int x = random.nextInt(width);
			int y = random.nextInt(height);
			int x1 = random.nextInt(width);
			int y1 = random.nextInt(height);
			Color color1 = new Color(random.nextInt(255), random.nextInt(255),
					random.nextInt(255));

			g.setColor(color1); // 随即画各种颜色的线

			g.drawLine(x, y, x1, y1);
		}
		// 图像生效
		g.dispose();
		// 输出页面
		ImageIO.write(bi, "jpg", out);
		out.close();
	}

	public static void main(String[] args) throws IOException {
		String num = random();
		System.out.println(num);
		createImage(num, new FileOutputStream("D:/test.jpg"));
		System.out.println("Image generated.");
	}
}

 

分享到:
评论

相关推荐

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

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

    Java验证码实现源码

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

    java验证码的源码

    Java验证码是一种常用的安全机制,用于防止自动化的机器人或者恶意脚本对网站进行非法操作,比如批量注册、恶意登录等。验证码通常由随机生成的一串字符或数字组成,用户需要正确输入才能完成相应的操作。在Java中...

    java验证码识别

    Java验证码识别技术主要涉及到图像处理和光学字符识别(OCR)两个关键领域,是自动化系统中用于防止机器人自动操作的一种安全机制。在这个Java项目中,我们看到的文件名可能与训练模型、输入图像和识别结果有关。...

    Java验证码框架.

    Java验证码框架.可实现多种验证很强大

    java 验证码识别源程序

    这个Java验证码识别源程序针对的是Windows操作系统,并且据描述声称其识别准确率超过90%,这意味着它具有较高的实用价值。接下来,我们将深入探讨验证码识别的基本原理、相关技术以及如何在Java中实现。 验证码...

    纯Java验证码工具类

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

    java 验证码失效异常类

    java 验证码失效异常类java 验证码失效异常类java 验证码失效异常类java 验证码失效异常类java 验证码失效异常类java 验证码失效异常类java 验证码失效异常类java 验证码失效异常类java 验证码失效异常类java 验证码...

    java验证码

    Java验证码是一种常用的安全机制,主要用于防止自动化的机器人或者恶意脚本进行非法操作,例如注册、登录、提交表单等。在Web开发中,Java验证码的实现通常涉及到图像生成、随机字符生成、以及客户端与服务器之间的...

    JAVA验证码原理及实现

    本文将深入探讨JAVA验证码的原理及其实现方法。 验证码的生成主要分为以下几个步骤: 1. **随机字符串生成**:首先,我们需要生成一组随机的字符串。这通常由字母、数字或特殊字符组成,长度可以在4到6个字符之间...

    java验证码组件Jcaptcha

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

    Java验证码

    Java验证码是一种广泛应用于Web开发中的安全机制,主要目的是防止恶意自动化程序(如机器人或爬虫)对网站进行非法操作,例如频繁提交表单、刷票等。在Java中实现验证码通常涉及图像处理、随机数生成以及哈希算法等...

    Java验证码的实现

    总的来说,Java验证码的实现涉及到Java图形处理、Web编程以及安全策略等多个方面的知识,是Java Web开发中一个实用且重要的技能。通过实践,你可以更好地理解和掌握这些技术,并能根据实际需求进行扩展和优化。

    java验证码生成类

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

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

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

    java验证码识别源码

    在本Java验证码识别源码中,我们将会探讨如何利用编程技术来识别和解析这些图形验证码。 首先,验证码识别通常涉及图像处理和机器学习两大部分。图像处理用于预处理图片,提取特征;机器学习则用于训练模型,识别...

    java验证码及刷新

    总的来说,"java验证码及刷新"项目是一个基础但实用的Web开发实践,它展示了如何利用Java技术来实现验证码的生成与刷新功能,对于理解和掌握Java Web开发有很好的学习价值。通过这样的实践,开发者可以更好地理解JSP...

    70.java验证码生成.zip

    70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java...

    Java验证码生成库 JCaptcha

    Java验证码生成库 JCaptcha

Global site tag (gtag.js) - Google Analytics