java生成随机验证码(ASCII)

来源:互联网 发布:淘宝助理批量导出图片 编辑:程序博客网 时间:2024/06/11 04:47

最近做的一些东西,在做请求时,要伪造一些随机码,所以就写了个方法,网上实现也比较多,这里只是提供自己的这个相对来说比较简单,主要是看实现思路,主要是利用java的 Random类


1. 只生成数字验证码

因为是用于验证码,所以首位为0也是可以的,单纯的用random.nextInt(4位数)这种形式是无法生成首位为0的验证码的
/** * 获取几位随机数
         * @author 郑明亮 * @param number * @return */public static String getRandomNumCode(int number){    String codeNum = "";    int [] numbers = {0,1,2,3,4,5,6,7,8,9};    Random random = new Random();    for (int i = 0; i < number; i++) {    int next = random.nextInt(10000);//目的是产生足够随机的数,避免产生的数字重复率高的问题//    System.out.println(next);codeNum+=numbers[next%10];}    System.out.println("--------");    System.out.println(codeNum);        return codeNum;     }

2. 生成带数字、大小写字母的验证码

这的实现思路主要是先生成数字、大写字母、小写字母的ASCII值,然后将其转换成char放到一个数组中,然后从这数组中随机取一个,这样避免产生的随机码中均包含这三种的情况

/** * 生成随机码值,包含数字、大小写字母     * @author 郑明亮 * @param number 生成的随机码位数 * @return */public static String getRandomCode(int number){String codeNum = "";int [] code = new int[3];Random random = new Random();for (int i = 0; i < number; i++) {int num = random.nextInt(10) + 48;int uppercase = random.nextInt(26) + 65;int lowercase = random.nextInt(26) + 97;code[0] = num;code[1] = uppercase;code[2] = lowercase;codeNum+=(char)code[random.nextInt(3)];}System.out.println(codeNum);return codeNum;}







原创粉丝点击