java制作简单验证码并验证程序

在平时,我们登录一些网站或者软件时经常会让我们填写验证码,通过输入验证码功能可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,下面我们利用一个比较简易的方式实现这个功能。

我们制作一个简单的四位验证码验证程序,程序首先生成一个随机验证码,然后用户输入验证码进行验证,输入字母时可以不区分大小写,输入正确则成功,若输入错误会提示重新输入,若超过三次错误则会重新生成一个验证码,直到你输入成功为止,下面为完整代码:

public static void main(String[] args) {
        // 定义循环判断
        boolean flag = true;
        while (flag) {
            // 验证成功时自动退出,未验证成功时一直验证
            makeNum();
        }
    }

    // 产生验证码方法
    public static  void makeNum() {
        String str1 = "abcdefghijklmnopqrstuvwxyz";
        String str2 = "0123456789";
        // 小写字母数组
        char[] arr1 = str1.toCharArray();
        // 大写字母数组
        char[] arr2 = str1.toUpperCase().toCharArray();
        // 数字数组
        char[] arr3 = str2.toCharArray();
        // 生成的随机数为数组的下标
        // 设四位验证码第一位和第四位是小写字母,第二位是大写字母,第三位是数字
        int first = new Random().nextInt(arr1.length);
        int second = new Random().nextInt(arr2.length);
        int third = new Random().nextInt(arr3.length);
        int fourth = new Random().nextInt(arr1.length);

        // 定义一个可变字符串拼接四个字符
        StringBuffer out = new StringBuffer();
        out.append(arr1[first]);
        out.append(arr2[second]);
        out.append(arr3[third]);
        out.append(arr1[fourth]);
        // 因为StringBuffer类没有转化大小写方法,所以还要把可变字符串转化为固定字符串
        String numCheck = out.toString();
        // 输出验证码
        System.out.println(numCheck);
        // 定义验证成功判断
        boolean flag1 = true;
        // 定义输入错误次数
        int time = 1;
        while (flag1) {
            System.out.println("请输入验证码:");
            String input = new Scanner(System.in).nextLine();
            // 输入转为大写小等于验证码转为大小写则正确(关键)
            if (input.toUpperCase().equals(numCheck.toUpperCase()) || input.toLowerCase().equals(numCheck.toLowerCase())) {
                System.out.println("恭喜您验证成功!");
                // 成功就退出系统
                System.exit(0);
            } else {
                // 错误一次加一次
                time++;
                // 第三次还是输入错误时不用提示这句话,就要输出底下那句话
                if (time <= 3) {
                    System.out.println("您的验证码输入错误,请重新输入!");
                }
            }
            if (time > 3) {
                System.out.println("您输入错误次数太多,已为您重新生成验证码!");
                // 跳出循环
                flag1 = false;
            }
        }

    }

以上代码纯属个人想法,若有问题,欢迎留言指正!

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值