Java-生成指定长度验证码的一种简单思路

摘要:
*@paramargs*/publicstaticvoidmain(String[]args){for(int i=0;i++){System.out.println(“[”+i+“]”+“the verificationcodes]”+createVerificationCode(6))作为调用和测试验证代码生成方法的入口;

 前言:以前做过的一个项目,刚开的时候始验证码是在前端生成前端验证的,后来觉得不靠谱,另外就是找回密码的功能也需要发送邮件和短信的验证码,所以,验证码就必须在后端生成并且保存到应用会话中才行了!所以,就有了下面的这段简单的代码,这段代码虽然简单,但也是生成验证码的一种思路,在此小记一笔以备后用。

1:如下是生成验证码、测试生成验证码的方法,比较简单,注释也比较清楚,不多说了

package start;

import java.util.Random;

public class HelloMain {
    /**
     * 主函数,作为调用和测试生成验证码方法的入口
     * @param args
     */
    public static void main(String[] args)
    {
            for(int i=0; i<10;i++)
            {
                System.out.println("【"+i+"】"+"      【the verification code is】       "+createVerificationCode(6));
            }
    }
    /**
     * 生成指定长度的验证码
     * @author Q
     * @param verificationCodeLength
     * @return String
     * @since 2016-09-6
     */
    public static final String createVerificationCode(int verificationCodeLength) 
    {
        //    所有候选组成验证码的字符,可以用中文
        String[] verificationCodeArrary={"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
               "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
               "A","B","C","D","E","F","G","H","I","J", "K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"
               };
        String verificationCode = "";
        Random random = new Random();
        //此处是生成验证码的核心了,利用一定范围内的随机数做为验证码数组的下标,循环组成我们需要长度的验证码,做为页面输入验证、邮件、短信验证码验证都行
        for(int i=0;i<verificationCodeLength;i++){verificationCode += verificationCodeArrary[random.nextInt(verificationCodeArrary.length)];}
        return verificationCode;
    }
}

2:如下是运行主函数生十组六位长度验证码的运行结果演示图

Java-生成指定长度验证码的一种简单思路第1张

3:小结

此例的核心和JS-改变页面的颜色之变化核心-获取六位的随机数类似,都需要利用随机数函数来模拟生成六位随机数经过处理一下后,前者作为验证码后者作为颜色的十六进制六位表示值。

免责声明:文章转载自《Java-生成指定长度验证码的一种简单思路》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Python-判断正负小数Swiper正方体,左右翻转轮播图下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

PostgreSQL之 使用扩展Extension

   目前开发中用到的都是PostgreSQL的一些基本的功能,无意间查到PostgreSQL还支持Extension,不仅源码包中自带有Extension,还有一些其他非官方的Extension。现在不用,记录一下,以后碰到问题时希望自己能想起来,也是一个思路吧。         pg_partman 是 PostgreSQL 的一个扩展插件,用于创建和...

12mybatis调用执行存储过程

mybatis 调用执行存储过程 mysql 声明建立存储过程 删除 在mysql中调用 -- 声明定义存储过程 delimiter $$ create procedure delbook(id int) begin delete from book where book_id=id; end$$ delimiter ; -- 删除存储过程 drop p...

Qt5之坐标系统

窗口坐标为逻辑坐标,是基于视口坐标系的。 视口坐标为物理坐标,是基于绘图设备坐标系的 窗口坐标始终以视口坐标为最终目标进行映射:  QPainter::setWindow 修改了窗口位置和大小(左上角重新定义了一个数值和长度) QPainter::setViewport 修改了视口位置和像素个数(左上角移动到相应位置和像素个数) -------------...

Oracle 数据类型

一、Oracle数据类型 1.字符数据类型 CHAR 固定长度的字符串,可以存储字母数字值。长度可以是1到2000个字节。如果在定义时未指定大小,则默认占用一个字节。 如果用户输入的值小于指定的长度,数据库则用空格填充至固定长度。 VARCHAR2 用于存储可变长度的字符串或字母数字值。长度可以是1到4000个字节。定义该数据类型时,应指定大小。 与CHA...

JAVA多种向influxDB中插入数据方式

package cn.test.jmeter.util; import org.influxdb.InfluxDB; import org.influxdb.InfluxDBFactory; import org.influxdb.dto.BatchPoints; import org.influxdb.dto.Point; import org.inf...

Spring源码分析:类型转换(一)之PropertyEditor和ConversionService

引子 创建Person类: @Data @Component public class Person { @Value("wj") private String name; @Value("20") private Integer age; @Value("2020/10/10 12:30:30") private Date birth;...