Java算法(七):随机产生验证码 && 前后端验证码比对处理 && 实战思路步骤

Java算法(七)

随机产生验证码

package com.liujintao.random;

import java.util.Random;
import java.util.Scanner;

public class RandomNumber {
    /**
     * 该函数调用验证码所有的函数,完成验证码模块功能开发
     * @param args
     */
    public static void main(String[] args) {
        // 1、调用产生验证码元素函数
        char[] result = CodeCharArray();

        // 2、调用产生验证码下标索引的数组函数
        int[] array_index = RandomCode();

        // 3、调用生成验证码函数
        String code = getCode(result, array_index);
        System.out.println("生成的验证码为:" + code);

        // 4、调用获取用户输入的验证码函数
        String user = InputCode();
        System.out.println("用户输入的验证码为:" + user);

        // 5、调用验证结果的处理函数
        handleCode(code, user);
    }

    /**
     *1.获取验证码元素
     */
   public static char[] CodeCharArray() {
       // 产生的验证码元素方法字符数组中
       char[] ch = new char[62];

       // 获取验证码元素
       int index = 0;
       for (char c = 'a'; c <= 'z'; c++) {
            // 注意,字符可以用数组表示,所以这里用char类型,计数器从c 到 z
           ch[index] = c;
           index++;
       }

       for (char c = 'A'; c <= 'Z'; c++) {
           ch[index] = c;
           index++;
       }

       for (char i = '0'; i <= '9'; i++) {
           ch[index] = i;
           index++;
       }

       return ch;


   }


    /**
     * 2.产生验证码下标索引的方法
     */
    public static int[] RandomCode() {
        Random r = new Random();
        int[] indexNum = new int[5];
        for (int i = 0; i < 5; i++) {
            indexNum[i] = r.nextInt(26 + 26 + 10);
        }
        return indexNum;
    }

    /**
     *3.得到验证码字符串的方法
     * @param ch
     * @param index
     * @return
     */
    public static String getCode(char[] ch, int[] index) {
        // 用字符串存放获得的每个字符验证码,并返回
        String CodeStr = "";
        for (int i = 0; i < index.length; i++) {
            CodeStr += ch[index[i]];
        }
        return CodeStr;
    }


    /**
     * 4.前台发送过来用户输入的验证码
     */
    public static String InputCode() {
        Scanner sc = new Scanner(System.in);
        // 这里是模拟请求的验证码
        String inputCode = "";
        System.out.println("请输入验证码:");
        for (int i = 0; i < 5; i++) {
            // 注意请求过来的都是json格式,需要转换成String(所以这里用String)
            String str = sc.next();
            inputCode += str;
        }
        return inputCode;
    }


    /**
     * 5.处理验证码是否正确的方法
     */
    public static void handleCode(String code, String user) {
        if (code.equals(user)) {
            System.out.println("验证码输入正确!");
        } else {
            System.out.println("验证码输入有误,请检查后重新输入!");
        }
    }
}

运行效果
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脱发使我稳重

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值