0
点赞
收藏
分享

微信扫一扫

验证码的生成

在我们的系统里验证码是必不可少的,比如注册登录时,忘记密码时,设置支付密码时或者支付下单时,那验证码的作用在哪里呢?其实就一条为了防止来着黑客和机器人恶意的访问,那么下面我们来看看hutool里验证码工具类。
一.验证码组成
一般的验证码由两部分组成,一是背景的干扰线,二是用于验证的验证码,验证码可以是数字+英文(大小写),也可以是纯中文,也可以是12306网站那种找出同类似的图片,另外一种就是最近几年出来滑块验证,下面看看代码。

1.创建验证码图像,这里是以数字和字母为基础生成验证码,当然也可以自定义生成

public Image createImage(String code) {
// 图像buffer
final BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
final Graphics2D g = GraphicsUtil.createGraphics(image, ObjectUtil.defaultIfNull(this.background, Color.WHITE));
// 干扰线
drawInterfere(g);
// 字符串
drawString(g, code);
return image;
}

2.随机干扰线的绘制

private void drawInterfere(Graphics2D g) {
final ThreadLocalRandom random = RandomUtil.getRandom();
// 随机干扰线
for (int i = 0; i < this.interfereCount; i++) {
int xs = random.nextInt(width);
int ys = random.nextInt(height);
int xe = xs + random.nextInt(width / 8);
int ye = ys + random.nextInt(height / 8);
//颜色随机
g.setColor(ImgUtil.randomColor(random));
//根据坐标绘制
g.drawLine(xs, ys, xe, ye);
}



举报

相关推荐

0 条评论