前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >验证码生成 工具类 & Random 用法

验证码生成 工具类 & Random 用法

作者头像
收心
发布2022-01-17 14:15:15
2820
发布2022-01-17 14:15:15
举报
文章被收录于专栏:Java实战博客

场景,需要做个验证码 生成器,不需要图片。只能自己做一个,虽然网站有很多,自己写的,自己用着舒服。可能性能没别人好,但是可以借着做一篇 调优篇。

Random(追加标题,方便搜索到随机数)

代码语言:javascript
复制
import java.util.Random;

/**
 * @author : zanglikun
 * @date : 2021/2/1 11:03
 * @Version: 1.0
 * @Desc : 验证码 生成。 有个缺点,有时间 进行修复 :每次 都是 new出来 Random对象 、String[]、StringBuilder对象 看看能不减少生成次数
 */
public class CheckCodeUtil {
    // 纯数字
    private final static String allnumcode = "0,1,2,3,4,5,6,7,8,9";
    // 纯小写字母
    private final static String allcharcode = "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";
    // 全混合性
    private final static String allcode = "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,0,1,2,3,4,5,6,7,8,9";

    // 输入验证码长度 生成纯数字验证码
    public static String allnumcode(int num){
        StringBuilder code = new StringBuilder();
        String[] split = allnumcode.split(",");
        Random random = new Random();
        //Math.random()方法 返回的是 [0,1) 区间范围的数  使用规则一般是 Math.random()*(Max - min)+min 就可以达到[min,Max]的数了
        for (int i = 0; i < num; i++) {
            code.append(split[random.nextInt(split.length)]);
        }
        return code.toString();
    }

    // 输入验证码长度 生成纯小写字母验证码
    public static String alllowcasecharcode(int num){
        StringBuilder code = new StringBuilder();
        String[] split = allcharcode.split(",");
        Random random = new Random();
        //Math.random()方法 返回的是 [0,1) 区间范围的数  使用规则一般是 Math.random()*(Max+1 - min)+min 就可以达到[min,Max]的数了
        for (int i = 0; i < num; i++) {
            code.append(split[random.nextInt(split.length)]);
        }
        return code.toString();
    }

    // 输入验证码长度 生成混合型字母验证码
    public static String allcode(int num){
        StringBuilder code = new StringBuilder();
        String[] split = allcode.split(",");
        Random random = new Random();
        //Math.random()方法 返回的是 [0,1) 区间范围的数  使用规则一般是 Math.random()*(Max+1 - min)+min 就可以达到[min,Max]的数了
        for (int i = 0; i < num; i++) {
            code.append(split[random.nextInt(split.length)]);
        }
        return code.toString();
    }

    /**
     * 测试 验证码
     * @param args
     */
    public static void main(String[] args) {
        System.out.println(allnumcode(6));
        System.out.println(alllowcasecharcode(6));
        System.out.println(allcode(6));
    }
}

想要生成带图片验证码的,请参考 Hutool工具。

https://hutool.cn/docs/#/captcha/%E6%A6%82%E8%BF%B0?id=%e8%87%aa%e5%ae%9a%e4%b9%89%e9%aa%8c%e8%af%81%e7%a0%81

特殊说明: 解决问题的光鲜,藏着磕Bug的痛苦。 万物皆入轮回,谁也躲不掉! 以上文章,均是我实际操作,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,请勿直接盗用!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Random(追加标题,方便搜索到随机数)
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档