Java生成验证码

简介: 互联网中,我们经常在登录一些网站和App时能看到一些验证码,有那么这些是怎么实现的呢?接下来,以下图的验证码为例

互联网中,我们经常在登录一些网站和App时能看到一些验证码,有那么这些是怎么实现的呢?接下来,以下图的验证码为例:

image.png


思路

不同字母所在的的ASCII码分布不同

大写字母的ASCII码分布在65~90

小写字母的ASCII码分布在97~122

数字0-9的ASCII码分布在48~57(本案例未添加数字)

此外,如果想生成图形化效果,可以通过Java画笔工具实现,稍后有时间我会更新

/**
     * 返回英文验证码(包含大小写)
     * @param len 期望的验证码长度
     * @return 返回验证码
     */
    public static String createCode(int len,int m){
        StringBuilder result=new StringBuilder();
        char[] words=new char[len];
        for (int i = 0; i < len; i++) {
            int code=0;
            //大小写字母都有出现的概率
            if((int)(Math.random()*i%2)==0)//得到大写字母
                code=(int)(Math.random()*26+65);
            else//得到小写字母
                code=(int)(Math.random()*26+97);
            words[i]=(char)code;
        }
        //随机打乱顺序
        shuffle(words);
        for(char word:words){
            result.append(word);
        }
        return String.valueOf(result);
    }
    //随机打乱的方法
    public static void shuffle(char[] words){
        for (int i = 0; i < words.length; i++) {//随机生成范围在(0~数组长度)的数字rand,并递归与第i个字符进行交换
            int rand=(int)(Math.random()*words.length);
            swap(i,rand,words);
        }
    }
    //交换数组的方法
    public static void swap(int i,int j,char[] words){
        char temp=words[i];
        words[i]=words[j];
        words[j]=temp;
    }


调用四次该方法,查看效果(大写字母的概率比小写字母的要大,未优化)

image.png

相关文章
|
6月前
|
Java
java实现动态验证码源代码——绘制验证码的jsp
java实现动态验证码源代码——绘制验证码的jsp
|
6月前
|
前端开发 Java
java实现动态验证码源代码——jsp页面
java实现动态验证码源代码——jsp页面
|
6月前
|
Java 机器人 网络安全
Java代码快速生成验证码
Java代码快速生成验证码
139 0
JavaWeb用户信息管理系统-在登录中添加验证码功能
JavaWeb用户信息管理系统-在登录中添加验证码功能
75 0
|
1月前
|
Java
Java 登录输入的验证码
Java 登录输入的验证码
23 1
|
6月前
|
JavaScript Java
java生成验证码并进行验证
java生成验证码并进行验证
|
5月前
|
存储 NoSQL Java
Redis系列学习文章分享---第三篇(Redis快速入门之Java客户端--短信登录+session+验证码+拦截器+登录刷新)
Redis系列学习文章分享---第三篇(Redis快速入门之Java客户端--短信登录+session+验证码+拦截器+登录刷新)
100 0
|
6月前
|
Java
JAVA生产随机生成验证码
Java代码实现随机生成指定位数的数字、大小写字母混合的验证码。使用`Random`类生成类型(0-数字,1-大写字母,2-小写字母),然后根据类型转换为相应字符。示例代码展示了一个4位验证码的生成,并附有实现结果图和过程分析。
217 2
|
6月前
|
安全 JavaScript 小程序
java 实现短信验证码
java 实现短信验证码
75 0
|
6月前
|
移动开发 前端开发 JavaScript
Java 验证码模块
Java 验证码模块