📅  最后修改于: 2023-12-03 14:43:04.189000             🧑  作者: Mango
在现代社会中,人们需要使用各种密码来保护个人信息的安全。为了避免使用简单或容易猜测的密码,需要使用随机生成的密码。本文将介绍一个使用Java编写的程序来生成指定数量、指定长度的随机密码。
程序的生成密码的基本思路如下:
import java.security.SecureRandom;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
public class PasswordGenerator {
private static final String LOWER_CASE = "abcdefghijklmnopqrstuvwxyz";
private static final String UPPER_CASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private static final String NUMBERS = "0123456789";
private static final String SPECIAL_CHARACTERS = "!@#$%^&*_=+-/";
private static final String ALL_CHARACTERS = LOWER_CASE + UPPER_CASE + NUMBERS + SPECIAL_CHARACTERS;
private static final SecureRandom random = new SecureRandom();
public static Set<String> generatePasswords(int passwordLength, int numberOfPasswords) {
Set<String> passwords = new HashSet<>();
while (passwords.size() < numberOfPasswords) {
StringBuilder password = new StringBuilder();
for (int i = 0; i < passwordLength; i++) {
int index = random.nextInt(ALL_CHARACTERS.length());
password.append(ALL_CHARACTERS.charAt(index));
}
if (isValid(password.toString())) {
passwords.add(password.toString());
}
}
return passwords;
}
private static boolean isValid(String password) {
return password.matches("^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{8,}$");
}
public static void main(String[] args) {
int passwordLength = 10;
int numberOfPasswords = 5;
Set<String> passwords = PasswordGenerator.generatePasswords(passwordLength, numberOfPasswords);
passwords.forEach(System.out::println);
}
}
SecureRandom
生成随机数;generatePasswords
,该方法接受两个形参,分别是密码长度和生成数量,该方法返回生成的密码字符串集合;generatePasswords
方法中,使用循环遍历生成指定数量的密码;StringBuilder
生成随机字符串,并将其加入到密码字符串集合中;isValid
方法中,使用正则表达式验证生成的随机字符串是否符合密码规则;main
方法中调用generatePasswords
方法,并打印生成的密码字符串集合。本文介绍了一个使用Java编写的生成随机密码的程序,程序使用了SecureRandom
类生成随机数,并使用了集合来保存生成的密码,使用了正则表达式验证生成的密码是否符合规则。程序可以方便地应用于各种密码生成应用中。