java生成随机密码,包含大小写字母,数字,特殊字符等

	public static String generatePwd() {

        // 生成指定长度(2)的大写字母
		String upperCaseLetters = RandomStringUtils.random(2, 65, 90, true, true);

        // 生成指定长度(2)的小写字母
		String lowerCaseLetters = RandomStringUtils.random(2, 97, 122, true, true);

        // 生成指定长度(2)的数字
		String numbers = RandomStringUtils.randomNumeric(2);

        // 生成指定长度(2)的特殊字符
		//String specialChar = RandomStringUtils.random(2, 33, 47, false, false);

        // 生成指定长度(2)的随机[a-z]字符串,包含大小写
		String totalChars = RandomStringUtils.randomAlphanumeric(2);

		String combinedChars = upperCaseLetters.concat(lowerCaseLetters)
				.concat(numbers)
				//.concat(specialChar)
				.concat(totalChars);
		List<Character> pwdChars = combinedChars.chars()
				.mapToObj(c -> (char) c)
				.collect(Collectors.toList());
		Collections.shuffle(pwdChars);
		return pwdChars.stream()
				.collect(StringBuilder::new, StringBuilder::append, StringBuilder::append)
				.toString();
	}





拓展知识:
org.apache.commons.lang包下有一个RandomStringUtils类,其中有一个randomAlphanumeric(int length)函数,可以随机生成一个长度为length的字符串。
//产生5位长度的随机字符串,中文环境下是乱码
RandomStringUtils.random(5);

//使用指定的字符生成5位长度的随机字符串
RandomStringUtils.random(5, new char[]{'a','b','c','d','e','f', '1', '2', '3'});

//生成指定长度的字母和数字的随机组合字符串
RandomStringUtils.randomAlphanumeric(5);

//生成随机数字字符串
RandomStringUtils.randomNumeric(5);

//生成随机[a-z]字符串,包含大小写
RandomStringUtils.randomAlphabetic(5);

//生成从ASCII 32到126组成的随机字符串 
RandomStringUtils.randomAscii(4)

猜你喜欢

转载自blog.csdn.net/u013282737/article/details/125968429