密码长度为10位,包含大小写数字和非字母数学学符,不包含boc(不区分大小写),Java 动态随机数
时间: 2024-09-10 12:08:54 浏览: 62
各大银行小logo
密码生成算法通常会涉及使用 Java 的 `java.util.Random` 类和字符串操作。假设我们不考虑字符 "b" 和 "B",可以编写如下的 Java 代码片段来动态生成满足条件的 10 位密码:
```java
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.List;
public class PasswordGenerator {
private static final String ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+~`|}{[]:;?><,./-=";
private static final SecureRandom random = new SecureRandom();
public static String generatePassword(int length) {
List<Character> passwordChars = new ArrayList<>();
while (passwordChars.size() < length) {
int index = random.nextInt(ALPHABET.length());
char randomChar = ALPHABET.charAt(index);
if (!passwordChars.contains(randomChar)) { // 确保不重复
passwordChars.add(randomChar);
}
}
return new String(passwordChars.toArray());
}
public static void main(String[] args) {
int passwordLength = 10;
System.out.println("Generated password: " + generatePassword(passwordLength));
}
}
```
这段代码首先创建了一个包含所有允许字符的字符串。然后使用 `SecureRandom` 保证随机性,每次从这个字符串中随机选择一个字符并检查是否已添加到密码中。当达到指定长度时,返回生成的密码。
阅读全文