您的位置:首页 > 编程语言 > Java开发

java生成随机验证码(ASCII)

2017-08-16 11:56 411 查看
最近做的一些东西,在做请求时,要伪造一些随机码,所以就写了个方法,网上实现也比较多,这里只是提供自己的这个相对来说比较简单,主要是看实现思路,主要是利用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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: