java 随机密码
1 /** 2 * Created by xc on 2019/11/23 3 * 生成随机密码:6位数字 4 */ 5 public class Test7_4 { 6 7 public static void main(String[] args) { 8 System.out.println(randomPassword());//382630 9 } 10 11 public static String randomPassword() { 12 char[] chars = new char[6]; 13 Random rnd = new Random(); 14 for (int i = 0; i < 6; i++) { 15 chars[i] = (char) ('0' + rnd.nextInt(10)); 16 } 17 return new String(chars); 18 } 19 20 }
1 /** 2 * Created by xc on 2019/11/23 3 * 生成随机密码:简单8位 4 * 8位密码,字符可能由大写字母、小写字母、数字和特殊符号组成 5 */ 6 public class Test7_5 { 7 8 private static final String SPECIAL_CHARS = "!@#$%^&*_=+-/"; 9 10 public static void main(String[] args) { 11 System.out.println(randomPassword());//ejgY^14* 12 } 13 14 private static char nextChar(Random rnd) { 15 switch (rnd.nextInt(4)) { 16 case 0: 17 return (char) ('a' + rnd.nextInt(26)); 18 case 1: 19 return (char) ('A' + rnd.nextInt(26)); 20 case 2: 21 return (char) ('0' + rnd.nextInt(10)); 22 default: 23 return SPECIAL_CHARS.charAt(rnd.nextInt(SPECIAL_CHARS.length())); 24 } 25 } 26 27 public static String randomPassword() { 28 char[] chars = new char[8]; 29 Random rnd = new Random(); 30 for (int i = 0; i < 8; i++) { 31 chars[i] = nextChar(rnd); 32 } 33 return new String(chars); 34 } 35 36 }
1 /** 2 * Created by xc on 2019/11/23 3 * 生成随机密码:复杂8位 4 */ 5 public class Test7_6 { 6 7 private static final String SPECIAL_CHARS = "!@#$%^&*_=+-/"; 8 9 public static void main(String[] args) { 10 System.out.println(randomPassword());//Q*82-/zQ 11 } 12 13 private static int nextIndex(char[] chars, Random rnd) { 14 int index = rnd.nextInt(chars.length); 15 while (chars[index] != 0) { 16 index = rnd.nextInt(chars.length); 17 } 18 return index; 19 } 20 21 private static char nextSpecialChar(Random rnd) { 22 return SPECIAL_CHARS.charAt(rnd.nextInt(SPECIAL_CHARS.length())); 23 } 24 25 private static char nextUpperlLetter(Random rnd) { 26 return (char) ('A' + rnd.nextInt(26)); 27 } 28 29 private static char nextLowerLetter(Random rnd) { 30 return (char) ('a' + rnd.nextInt(26)); 31 } 32 33 private static char nextNumLetter(Random rnd) { 34 return (char) ('0' + rnd.nextInt(10)); 35 } 36 37 public static String randomPassword() { 38 char[] chars = new char[8]; 39 Random rnd = new Random(); 40 chars[nextIndex(chars, rnd)] = nextSpecialChar(rnd); 41 chars[nextIndex(chars, rnd)] = nextUpperlLetter(rnd); 42 chars[nextIndex(chars, rnd)] = nextLowerLetter(rnd); 43 chars[nextIndex(chars, rnd)] = nextNumLetter(rnd); 44 for (int i = 0; i < 8; i++) { 45 if (chars[i] == 0) { 46 chars[i] = nextChar(rnd); 47 } 48 } 49 return new String(chars); 50 } 51 52 private static char nextChar(Random rnd) { 53 switch (rnd.nextInt(4)) { 54 case 0: 55 return (char) ('a' + rnd.nextInt(26)); 56 case 1: 57 return (char) ('A' + rnd.nextInt(26)); 58 case 2: 59 return (char) ('0' + rnd.nextInt(10)); 60 default: 61 return SPECIAL_CHARS.charAt(rnd.nextInt(SPECIAL_CHARS.length())); 62 } 63 } 64 65 }