Java⾃动⽣成包含字母、数字、特殊符号的密码(任意长度字
符串)
需求:
⼀个是后端创建⽤户的默认密码,需要改成随机的,⼀个是前端创建⽤户的密码增加复杂度,规则都是:最少12位,包含数字,⼤⼩写字母,特殊字符
后端实现:
package com.aaronmegs.utils;
import java.util.Date;
import java.util.Random;
/**
* @author aaronmegs
* @create 2021/3/18 9:50 上午
*/
public class PasswordUtils {
/**
* ⼤⼩写字母
*/
public final static String[] word = {
"a", "b", "c", "d", "e", "f", "g",
"h", "j", "k", "m", "n",
"p", "q", "r", "s", "t",
"u", "v", "w", "x", "y", "z",
"A", "B", "C", "D", "E", "F", "G",
"H", "J", "K", "M", "N",
"P", "Q", "R", "S", "T",
"U", "V", "W", "X", "Y", "Z"
};
/**
* 数字 1-9
*/
public final static String[] num = {
"1", "2", "3", "4", "5", "6", "7", "8", "9"
};
/**
* 特殊字符
*/
public final static String[] symbol = {
"!", "@", "#", "$", "%", "^", "&", "*",
"(", ")", "{", "}", "[", "]" , ".", "?", "_"
//            "`", "-", ",", ";", ":", "'", "|", "~"
};
public final static String[] type = {
"word", "num", "symbol"
};
/**
* 随机⽣成 8-12 位包含字母、数字的密码
*
* @return
*/
public static String randomPassword() {
StringBuffer stringBuffer = new StringBuffer();
Random random = new Random(new Date().getTime());
boolean flag = false;
//输出⼏位密码长度这⾥是有可能8 ,9 ,10 位
int length = Int(3) + 8;
for (int i = 0; i < length; i++) {
if (flag) {
stringBuffer.append(Int(num.length)]);
字符串长度规则
} else {
stringBuffer.append(Int(word.length)]);
}
flag = !flag;
}
String();
}
/**
* 随机⽣成 n 位包含字母、数字、特殊字符的密码
*
* @return
*/
public static String randomPW(Integer count) {
StringBuffer stringBuffer = new StringBuffer();
Random random = new Random(new Date().getTime());
String flag = Int(type.length)];
// 输出长度 12 位
int length = count;
for (int i = 0; i < length; i++) {
switch (flag) {
case "word":
stringBuffer.append(Int(word.length)]);
break;
case "num":
stringBuffer.append(Int(num.length)]);
break;
case "symbol":
stringBuffer.append(Int(symbol.length)]);                    break;
default:
break;
}
flag= Int(type.length)];
}
String();
}
public static void main(String[] args) throws Exception {
System.out.println(randomPassword());
Thread.sleep(100);
System.out.println(randomPassword());
Thread.sleep(100);
System.out.println(randomPassword());
Thread.sleep(100);
System.out.println(randomPassword());
System.out.println("----------------------------------");
Thread.sleep(100);
System.out.println(randomPW(11));
Thread.sleep(100);
System.out.println(randomPW(12));
Thread.sleep(100);
System.out.println(randomPW(13));
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。