java生成随机验证码(ASCII)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zml_2015/article/details/77235512

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







猜你喜欢

转载自blog.csdn.net/zml_2015/article/details/77235512