工作小总结

【验证码】使用Java生成验证码,随机生成的长度不少于4位的字符,应包含字母与数字,并在显示时对其进行扭曲处理,提高识别的难度

需求:随机生成的长度不少于4位的字符,应包含字母与数字,并在显示时对其进行扭曲处理,提高识别的难度效果:这是上一篇文章中介绍的方案,但是,这种验证码过于简单。不能满足需求,修改后效果如下:完整代码:import javax.imageio.ImageIO;import java.awt.*;import java.awt.geom.AffineTransform;im


需求:

随机生成的长度不少于4位的字符,应包含字母与数字,并在显示时对其进行扭曲处理,提高识别的难度

效果:

a947cc223d3646b87631b0c02d1d1498.png

这是上一篇文章中介绍的方案,但是,这种验证码过于简单。不能满足需求,修改后效果如下:

a31893b1c47d88f92099c714ab8d59ef.png

完整代码:

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.security.SecureRandom;

public class DistortedText {
    public static void main(String[] args) {
        int width = 200;
        int height = 80;
        int codeLength = 4;
        String randomString = generateRandomString(codeLength);
        String filename = "distorted_text.png";
        drawDistortedText(width, height, randomString, filename);
    }

    private static String generateRandomString(int length) {
        String lettersAndDigits = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        StringBuilder sb = new StringBuilder();
        SecureRandom random = new SecureRandom();
        for (int i = 0; i < length; i++) {
            sb.append(lettersAndDigits.charAt(random.nextInt(lettersAndDigits.length())));
        }

原创不易,完成人机校验,阅读全文

相关推荐