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("验证码输入有误,请检查后重新输入!");
        }
    }
}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/134925.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

某城高速综合管控大数据大屏可视化【可视化项目案例-04】

🎉🎊🎉 你的技术旅程将在这里启航! 🚀🚀 本文选自专栏:可视化技术专栏100例 可视化技术专栏100例,包括但不限于大屏可视化、图表可视化等等。订阅专栏用户在文章底部可下载对应案例源码以供大家深入的学习研究。 🎓 每一个案例都会提供完整代码和详细的讲解,不…

Python之函数进阶-nonlocal和LEGB

Python之函数进阶-nonlocal和LEGB nonlocal语句 nonlocal:将变量标记为不在本地作用域定义&#xff0c;而是在上级的某一级局部作用域中定义&#xff0c;但不能是全局作用域中定义。 函数的销毁 定义一个函数就是生成一个函数对象&#xff0c;函数名指向的就是函数对象。可…

【中间件篇-Redis缓存数据库05】Redis集群高可用高并发

Redis集群 Redis Cluster是Redis的分布式解决方案&#xff0c;在3.0版本正式推出&#xff0c;有效地解决了Redis分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时&#xff0c;可以采用Cluster架构方案达到负载均衡的目的。之前,Redis分布式方案一般有两种: 1、客户端分…

vue 使用js new Map()优化多个if else 执行方法

前言 在实际开发中根据业务需求我们经常要判断情况&#xff0c;一个if 我们科技直接使用ES6就可以解决 经常会出现根据不同的条件执行不同的方法&#xff0c;这是就会有多个if else 看起不太美观也费劲 js new map &#xff08;&#xff09;就可以解决这个问题&#xff0c;它…

Tkinter,一个轻量级的Python GUI库

欢迎关注作者微信公众号&#xff1a;愤怒的it男 Tkinter&#xff08;即 tk interface&#xff0c;简称“Tk”&#xff09;本质上是对Tcl/Tk软件包的Python接口封装&#xff0c;属于Python自带的标准库&#xff0c;安装好Python后可以直接使用Tkinter库而无须另行安装。Tkinter库…

Python开源项目PGDiff——人脸重建(Face Restoration),模糊清晰、划痕修复及黑白上色的实践

python ansconda 等的下载、安装等请参阅&#xff1a; Python开源项目CodeFormer——人脸重建&#xff08;Face Restoration&#xff09;&#xff0c;模糊清晰、划痕修复及黑白上色的实践https://blog.csdn.net/beijinghorn/article/details/134334021 友情提示&#xff1a; …

建行广东省江门市分行走进农村地区开展反假货币宣传

人民对美好生活的向往&#xff0c;涉及方方面面&#xff0c;小至“钱袋子”安全。建行广东省江门市分行落实当地监管部门部署&#xff0c;积极扛起维护国家金融安全的重要政治责任&#xff0c;深入农村地区开展反假货币宣传工作&#xff0c;助力构建农村反假货币工作长效机制。…

递归和master公式

前置知识&#xff1a;无 1&#xff09;从思想上理解递归&#xff1a;对于新手来说&#xff0c;递归去画调用图是非常重要的&#xff0c;有利于分析递归 2&#xff09;从实际上理解递归&#xff1a;递归不是玄学&#xff0c;底层是利用系统栈来实现的 3&#xff09;任何递归函…

什么是AI算子开发

今天在某离职群里看到前同事聊天&#xff0c;说到国内某大厂的一个面试&#xff0c;本来求职面试的岗位是通信库&#xff0c;类似于英伟达的 nccl&#xff0c; 但是却被问到了很多与算子开发相关的问题。 看来算子开发岗位依然很稀缺。 联想到之前写过的一篇关于AI算子开发的文…

【JAVA进阶篇】与数据结构结合?这些知识你应该知道

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️JAVA进阶】 文章目录 前言关与JAVA中的数据结构Java中的数据结构 枚举位集合创建一个初始大小的位集合设置特定的位从另一个位集合中复制位迭代位集合中设置为1的位将位集合转换为字节数组将字节数组…

如何在 Azure 中使用自动机器学习进行模型训练

自动机器学习&#xff08;Automated Machine Learning&#xff0c;简称为AutoML&#xff09;是一种通过自动化流程来简化模型训练和调优的技术。在Azure机器学习平台中&#xff0c;AutoML提供了丰富的功能和工具&#xff0c;使我们能够快速地训练和优化机器学习模型。本文将介绍…

nodejs多版本管理

背景 在开发过程中经常会用到不同的nodejs版本&#xff0c;程序在不同版本之间又可能不兼容的情况。一般的做法就是卸载nodejs然后安装需要的版本&#xff0c;这样太过于麻烦。实际上跟conda一样&#xff0c;可以做多版本的管理 解决方法 安装nvm管理nodejs版本&#xff0c;…

windows上运行yolov3代码详解(小白)

batch_normalize1 # 是否做BN 代码链接 环境配置 没有Anaconda的话可以安装下 首先创建虚拟环境&#xff0c;名称随意&#xff0c;版本3.9.我觉得挺好的 激活虚拟环境 conda activate 刚刚创建的环境名称 切换到requirements.txt目录下&#xff0c;直接vscode打开yolov3文件…

Linux应用开发基础知识——字符文字编码(五)

前言&#xff1a; TXT 文件中保存的是字符的核心&#xff1a;它的编码值。而 Notepad 上显示时&#xff0c; 这些字符对应什么样的形状态&#xff0c;这是由字符文件决定的。编码值&#xff0c;字体是两个不一样的东西&#xff0c;比如 A 的编码值是 0x41&#xff0c;但是在屏幕…

2.2 CE修改器:未知数值扫描

本关需要扫描未知数只扫描&#xff0c;要在不知道初始值的情况下找到一个在0到500之间的数值。首先&#xff0c;选择“未知的初始值”扫描方式&#xff0c;在数值类型中选择 4 字节&#xff0c;并点击“首次扫描”以开始扫描。扫描结束后&#xff0c;点击“打我”按钮进行一些操…

CS224W5.3——信念传播

此文中&#xff0c;我们介绍信念传播&#xff0c;这是一种回答图中概率查询的动态规划方法。通过迭代传递消息给邻居节点&#xff0c;如果达成共识&#xff0c;则计算最终的信念值。然后&#xff0c;我们通过示例和泛化树结构展示消息传递。最后讨论了循环信念传播算法及其优缺…

建行驻江门市分行纪检组以政治谈话压责任促发展

开展政治谈话&#xff0c;是加强“一把手”和领导班子监督、严肃党内政治生活、加强对党员领导干部日常教育管理的有效手段。 为督促“一把手”和领导班子成员依法依规履行职责、行使权力&#xff0c;推动党中央重大决策部署以及建设银行总行、广东省分行党委的决策部署在本单…

数据结构之红黑树

红黑树的概念 红黑树&#xff08;Red-Black Tree&#xff09;同AVL树一样, 也是一种自平衡的二叉搜索树, 但在每个结点上增加一个存储位表示结点的颜色, 可以是Red或Black, 通过对任何一条从根到叶子的路径上各个结点着色方式的限制, 红黑树确保没有一条路径会比其他路径长出俩…

Vue23组件自定义事件 和 解绑事件

Vue2&3组件自定义事件 和 解绑事件 Vue2组件自定义事件 功能&#xff1a;父组件绑定数据&#xff0c;子组件触发事件。&#xff08;父绑子触发&#xff09; 实现步骤&#xff08;前三步在父组件实现&#xff0c;第四步在子组件实现&#xff09;&#xff1a; 第一步&#…

测试用例的设计方法(黑盒)

1.基于需求的设计方法 比如针对网易邮箱进行测试&#xff1a;分为功能相关和非功能相关两大类 但是这么设计的话&#xff0c;有无数多个测试用例&#xff0c;我们现在看到的只是一些大概的测试用例&#xff0c;要想设计具体的测试用例&#xff0c;需要用到下面测试用例的方法…