直接上代碼,根據傳入的長度生成(且密碼中必須包含數字,大小寫字母)
package com.xingsfdz.util;
import java.util.Random;
/**
*
* @類名稱 StringUtils.java
* @類描述 <pre></pre>
* @作者 xingsfdz [email protected]
* @創建時間 2019年9月26日 下午9:47:35
* @版本 1.00
*
* @修改記錄
* <pre>
* 版本 修改人 修改日期 修改內容描述
* ----------------------------------------------
* 1.00 xingsfdz 2019年9月26日
* ----------------------------------------------
* </pre>
*/
public class StringUtils {
/**
*
* @方法名稱 GenRandomStringByLen
* @功能描述 <pre>生成傳入的長度的密碼</pre>
* @作者 xingsfdz
* @創建時間 2019年9月26日 下午10:39:03
* @param len
* @return
*/
public static String GenRandomStringByLen(Integer len){
String password = "";
int[] pwdindex =new int[len];
char[] numbers = { '0','1','2','3','4','5','6','7','8','9'};
char[] upperLetters = {'A','B','C','D','E','F','G','H','I','J',
'K','L','M','N','O','P','Q','R','S','T',
'U','V','W','X','Y','Z'};
char[] lowerLetters = {'a','b','c','d',
'e','f','g','h','i','j','k','l','m','n',
'o','p','q','r','s','t','u','v','w','x',
'y','z'};
char[] allCharacters = { '0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F','G','H','I','J',
'K','L','M','N','O','P','Q','R','S','T',
'U','V','W','X','Y','Z','a','b','c','d',
'e','f','g','h','i','j','k','l','m','n',
'o','p','q','r','s','t','u','v','w','x',
'y','z'};
StringBuilder sb = new StringBuilder();
for (int i = 0; i < pwdindex.length; i++) {
sb.append(allCharacters[new Random().nextInt(62)]);
}
password = sb.toString();//先按傳進來的長度生成一個隨機密碼
//下面處理密碼中必須包含大小寫字母與數字
int a = 0;
int b = 0;
int c = 0;
a = new Random().nextInt(len);
while(a == b){
b = new Random().nextInt(len);
}
while(a == c || b == c){
c = new Random().nextInt(len);
}
password = password.replace(password.charAt(a), lowerLetters[new Random().nextInt(26)]);//小寫
password = password.replace(password.charAt(b), numbers[new Random().nextInt(10)]);//數字
password = password.replace(password.charAt(c), upperLetters[new Random().nextInt(26)]);//大寫
System.out.println("password:" + password);
return password;
}
public static void main(String[] args) {
GenRandomStringByLen(3);
}
}