强密码生成器
包含大小写英文、数字和英文符号
package com.jiawei.Utils;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class PassGenerator {
public static String generatePassword() {
char[] symbols = "!@#$%^&*()_+-= {}[]:;'<>,.?/|".toCharArray();
Random random = new SecureRandom();
StringBuilder password = new StringBuilder("");
// 保证新生成的密码符合条件
for (int i = 0; i < 2; i++) {
password.append((char) (random.nextDouble() * 26 + 'a'));
password.append((char) (random.nextDouble() * 26 + 'A'));
password.append(random.nextInt(10));
password.append(symbols[random.nextInt(symbols.length)]);
}
// 打乱密码顺序
char[] c = password.toString().toCharArray();
List<Object> lst = new ArrayList<Object>();
for (int i = 0; i < c.length; i++) {
lst.add(c[i]);
}
Collections.shuffle(lst);
StringBuilder tmp = new StringBuilder();
for (int i = 0; i < lst.size(); i++) {
tmp.append(lst.get(i));
}
return tmp.toString();
}
public static void main(String[] args) {
System.out.println("生成密码:" + generatePassword());
}
}
密码校验正则表达式,必须要同时包含英文,数字和英文符号且八位及以上
^(?![A-Za-z\\d]+$)(?![A-Za-z\\W_]+$)(?![\\d\\W_]+$)([\\x21-\\x7E]{8,})$