Java实现验证码验证功能

推荐一个专注于Java的小众技术社区:Java之音

Java如何实现验证码验证功能呢?日常生活中,验证码随处可见,他可以在一定程度上保护账号安全,那么他是怎么实现的呢?

Java实现验证码验证功能其实非常简单:用到了一个Graphics类在画板上绘制字母,随机选取一定数量的字母随机生成,然后在画板上随机生成几条干扰线。

首先,写一个验证码生成帮助类,用来绘制随机字母:

 

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 final class GraphicHelper {

    /**
     * 以字符串形式返回生成的验证码,同时输出一个图片
     * 
     * @param width
     *            图片的宽度
     * @param height
     *            图片的高度
     * @param imgType
     *            图片的类型
     * @param output
     *            图片的输出流(图片将输出到这个流中)
     * @return 返回所生成的验证码(字符串)
     */
    public static String create(final int width, final int height, final String imgType, OutputStream output) {
	StringBuffer sb = new StringBuffer();
	Random random = new Random();

	BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
	Graphics graphic = image.getGraphics();

	graphic.setColor(Color.getColor("F8F8F8"));
	graphic.fillRect(0, 0, width, height);

	Color[] colors = new Color[] { Color.BLUE, Color.GRAY, Color.GREEN, Color.RED, Color.BLACK, Color.ORANGE,
		Color.CYAN };
	// 在 "画板"上生成干扰线条 ( 50 是线条个数)
	for (int i = 0; i < 50; i++) {
	    graphic.setColor(colors[random.nextInt(colors.length)]);
	    final int x = random.nextInt(width);
	    final int y = random.nextInt(height);
	    final int w = random.nextInt(20);
	    final int h = random.nextInt(20);
	    final int signA = random.nextBoolean() ? 1 : -1;
	    final int signB = random.nextBoolean() ? 1 : -1;
	    graphic.drawLine(x, y, x + w * signA, y + h * 
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值