`

生成随机码

    博客分类:
  • j2se
阅读更多
import javax.servlet.*;
import javax.servlet.http.*;

import java.io.*;
import java.awt.*;
import java.awt.image.*;
import java.util.*;
import javax.imageio.*;
/**
 * @author wing.cai wing929@163.com
 * @version 1.0
 * <br>Copyright (C), 2008-2009, wing.cai
 * <br>This program is protected by copyright laws.
 * <br>Program Name:
 * <br>Date: 
 */

public class Img extends HttpServlet {
	private Font mFont = new Font("Arial Black",Font.PLAIN,16);
	public void init() throws ServletException {
		// Put your code here
		super.init();
	}
	Color getRandColor(int fc,int bc){
		Random random = new Random();
		if (fc>255) fc=255;
		if (bc>255) bc=255;
		int r = fc + random.nextInt(bc - fc);
		int g = fc + random.nextInt(bc - fc);
		int b = fc + random.nextInt(bc - fc);
		return new Color(r, g, b);
	}
	
	private String getRandomChar(){
		int rand = (int)Math.round(Math.random() * 2);
		long itmp = 0;
		char ctmp = '\u0000';
		switch (rand){
			//生成大写字母的情形
		case 1:
			itmp = Math.round(Math.random() * 25 + 65);
			ctmp = (char)itmp;
			return String.valueOf(ctmp);
			//生成小写字母
		case 2:
			itmp = Math.round(Math.random() * 25 + 97);
			ctmp = (char)itmp;
			return String.valueOf(ctmp);
			//生成数字
		default:
			itmp = Math.round(Math.random() * 9);
			return String.valueOf(itmp);
		}
	}
	
	//生成服务器响应的service方法
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		//阻止生成的页面内容被缓存,保证每次重新生成随机验证码
		resp.setHeader("Pragma", "No-cache");
		resp.setHeader("Cache-Control", "no-cache");
		resp.setDateHeader("Expires", 0);
		resp.setContentType("image/jpeg");
		//指定图形验证码图片的大小
		int width = 100, height = 18;
		//生成一张新图片
		BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		//在图片中绘制内容
		Graphics g = image.getGraphics();
		Random random = new Random();
		g.setColor(getRandColor(200,250));
		g.fillRect(1, 1, width-1, height-1);
		g.setColor(new Color(102,102,102));
		g.drawRect(0, 0, width-1, height-1);
		g.setFont(mFont);
		//随机生成线条,让图片看起来更加杂乱
		g.setColor(getRandColor(160,200));
		for (int i = 0; i < 155; i++){
			int x = random.nextInt(width - 1);
			int y = random.nextInt(height - 1);
			int x1 = random.nextInt(6) + 1;
			int y1 = random.nextInt(12) +1;
			g.drawLine(x, y, x + x1, y + y1);
		}
		//随机生成线条,让图片看起来更加杂乱
		for (int i = 0; i < 70; i++){
			int x = random.nextInt(width - 1);
			int y = random.nextInt(height - 1);
			int x1 = random.nextInt(12) + 1;
			int y1 = random.nextInt(6) + 1;
			g.drawRect(x, y, x + x1, y + y1);
		}
		//该变量用于保存系统生成的随即字符串
		String sRand = "";
		for (int i = 0; i < 6; i++){
			//取得一个随机字符
			String tmp = getRandomChar();
			sRand += tmp;
			//将系统生成的随机字符添加到图形验证码图片上
			g.setColor(new Color(20+random.nextInt(110),
						20+random.nextInt(110),20+random.nextInt(110)));
			g.drawString(tmp, 15 * i + 10, 15);
		}
		//取得用户Session
		HttpSession session = req.getSession(true);
		//将系统生成的图形验证码添加到用户Session中
		session.setAttribute("rand", sRand);
		g.dispose();
		//输出图形验证码图片 
		ImageIO.write(image, "JPEG", resp.getOutputStream());
	}
	
	
	
	

}
分享到:
评论

相关推荐

    批处理生成随机密码存于文本文件中

    3. **随机数生成**:利用Windows批处理中的命令或者内置函数来生成随机字符,例如`%random%`命令可以获取一个随机整数。 4. **字符集选择**:为了确保密码包含特定类型的字符(大写字母、小写字母和数字),可能需要...

    Java随机字符串生成器,可用于生成随机密码,密约等场景,支持字符范围配置(如只允许数字,只允许字母,只允许数字字母,特殊字符等混合配置)

    Java随机字符串生成器,可用于生成随机密码,加密算法密约(AES,RSA等)等场景,支持可选字符范围配置(如只允许数字,只允许字母,只允许数字字母,特殊字符等混合配置),即在选择的字符范围内去实现随机字符串...

    VC 生成随机密码.rar

    在IT领域,编程时常需要处理安全性问题,其中生成随机密码是一项常见的任务。在这个场景下,"VC 生成随机密码.rar" 提供了一个基于Visual C++(VC)的解决方案,用于按照预设规则批量生成随机密码。这个程序允许用户...

    sql生成随机码--自定义大写、小写、数字、特定字符个数

    sql生成随机码--自定义大写、小写、数字、特定字符个数

    java生成随机密码

    - **字符选取**:`r.nextInt(range)`用于从0到`range-1`之间生成随机整数,作为索引获取`buffer`中的字符。 #### 三、扩展知识点 ##### 1. 随机性与安全性的考量 - **随机性**:虽然`java.util.Random`提供了生成...

    生成随机密码密钥

    在给定的文件列表中,我们可以看到一些可能与生成随机密码相关的文件,比如`CreatPsw.exe`可能是程序的可执行文件,`UMain.*`系列文件可能是程序的用户界面和代码部分。`CreatPsw.cfg`可能存储了程序配置,如默认...

    自动生成随机密码

    首先,`commons-lang.jar`是一个由Apache Commons项目提供的Java类库,它包含了大量方便实用的工具类,其中包括用于生成随机字符串的工具。在Java中,我们可以使用`org.apache.commons.lang3.RandomStringUtils`类来...

    vc生成随机密码.visual c++

    在VC++环境中生成随机密码是一项常见的任务,尤其在软件安全领域。这个压缩包"vc生成随机密码.visual c++.zip"包含了一系列源代码文件,显然这是一个简单的VC++项目,用于生成随机密码。接下来,我们将深入探讨如何...

    用JS生成随机码

    本文将深入探讨如何使用JavaScript生成随机码,这对于创建验证码、动态口令等应用场景至关重要。 生成随机码通常涉及到数学和算法知识,特别是数字生成和字符串操作。在JavaScript中,我们可以利用Math对象提供的...

    Python生成随机密码并写入文件

    Python生成随机密码并写入文件需要的函数和操作函数或操作的基本使用方法最终代码思路与资料来源 利用Python的string与random两个库,来生成一串由大小写字母和!@#$%^&*八个特殊字符,还有数字随机组合而成的随机...

    HTML5生成随机密码的源码,HTML5源码,可设置长度,字符,范围,难度辨识度!

    HTML5生成随机密码的源码,HTML5源码,可设置长度,字符,范围,难度辨识度!HTML5生成随机密码的源码,HTML5源码,可设置长度,字符,范围,难度辨识度!HTML5生成随机密码的源码,HTML5源码,可设置长度,字符,...

    利用Python如何生成随机密码

    Python作为一种强大的编程语言,提供了多种方式来生成随机密码,这对于自动化测试、安全性评估等场景非常有用。 #### Python生成随机密码的方法详解 ##### 方法一:基础的随机数字与字符生成 通过`random`模块与`...

    python生成随机密码

    管理员在日常创建账号的时候,总是要定义初始密码,这段python代码可以快速生成一个8位的随机密码。

    php生成随机密码

    ### PHP生成随机密码知识点详解 #### 一、引言 在使用PHP进行Web应用开发时,经常需要...通过上述测试,可以得出不同方法在实际应用中的时间效率表现,从而帮助开发者根据具体需求选择最合适的方法来生成随机密码。

    VBS随机生成密码【原创】

    在这个特定的场景中,我们讨论的是一个使用VBS编写的程序,其功能是生成随机密码。随机密码生成对于网络安全和个人隐私保护至关重要,特别是在创建强密码时。 在VBS中实现随机密码生成,主要涉及以下知识点: 1. *...

    ASP生成随机密码

    经过本人测试,没有问题的

    qt获取本地硬盘cpu主板序列号并生成随机码

    在Qt框架下,获取本地硬盘、CPU和主板序列号,并生成随机码,是软件开发中常见的一种需求,尤其是在实现激活码生成或者系统唯一标识符获取的场景。Qt库虽然主要专注于图形用户界面(GUI)的构建,但它也提供了一些...

    使用PHP快速生成随机密码1

    3. **生成随机密码的步骤**: - 首先,我们需要创建一个名为“sjmima.php”的PHP文件。 - 然后,使用`header()`函数设置文件编码为UTF-8,确保输出内容的正确显示:`header("Content-type:text/html;charset=utf-8...

    javascript生成随机密码案例

    本文将详细探讨如何使用JavaScript生成随机密码,以及提供的两个案例——js1.txt和js2.txt——中可能包含的具体实现方法。 生成随机密码的功能在许多应用场景中非常有用,比如用户注册时自动生成安全的初始密码,...

    php生成随机密码类.zip

    PHP生成随机密码类分享,生成的密码包含大小写英文字母及数字,可以供需要的朋友们学习参考。 ... 包含大小写字母,阿拉伯数字,特殊字符,密码长度,使用额外的特殊字符,从字符列中生成随机密码。

Global site tag (gtag.js) - Google Analytics