关于验证码的随机生成

其实验证码在我们的生活中很经常见到的,比如某些网站登录的时候,需要输入4位的验证码,注册时候收到的6位纯数字的短信验证码,银行相关app在支付的时候收到的6位数字+字母格式的短信验证码等等

今天呢,通过对手头上项目的基础代码的查看,总结一下,对于各种格式的验证码要怎么生成

纯数字的验证码生成方式

基础类中,length不用多说,是验证码的长度

public static String genNumericVerifyCode(int length) {
    return RandomUtil.genNumericRandomString(length);
}

进入这个方法查看

public static String genNumericRandomString(int length) {
    return genRandomString("0123456789", length);
}

这里可以看出,是用字符串“0123456789”中的元素作为验证码的组成部分,然后生成length长度的验证码

public static String genRandomString(String dict, int length) {
    return genRandomString(dict, length, (Random)null);
}

public static String genRandomString(String dict, int length, Random random) {
    int dictLength = dict.length();
    if (null == random) {
        random = ThreadLocalRandom.current();
    }

    StringBuilder sBuilder = new StringBuilder(length);

    for(int i = 0; i < length; ++i) {
        char c = dict.charAt(((Random)random).nextInt(dictLength));
        sBuilder.append(c);
    }

    return sBuilder.toString();
}

具体的生成方法是genRandomString,其中random是用来生成随机数,取指定字符串中的某一位

这里可以看出,使用的ThreadLocalRandom.current().nextInt(dictLength)的方式来生成一个整数,来获取指定字符串中的某一位,然后将取出的字符进行拼接返回。

同样的,如果要生成其他格式的验证码,只要将指定字符串换成其他的格式即可,例如

全大写  -->  "ABCDEFGHIJKLMNOPQRSTUVWXWZ"

全小写  -->  "abcdefghijklmnopqrstuvwxyz"

大写+小写  -->  "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXWZ"

数字+大写+小写  -->   "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXWZ"

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值