用Java生成8到20位随机密码
时间: 2023-08-31 14:35:43 浏览: 155
### 回答1:
Java中生成随机密码的方法有很多, 这里给出一种使用java.util.Random类的方法:
```
import java.util.Random;
public class Main {
public static void main(String[] args) {
// 生成一个8到20位的随机密码
int length = 8 + new Random().nextInt(12);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
// 生成一个97到122之间的随机整数(包含97, 不包含122)
// 对应ASCII码表中的小写字母
char c = (char)(97 + new Random().nextInt(26));
sb.append(c);
}
String password = sb.toString();
System.out.println("密码: " + password);
}
}
```
上面的代码会生成一个8到20位的随机密码, 密码中的字符都是小写字母.
你也可以使用java.security.SecureRandom类来生成随机密码, 这个类生成的随机数更安全, 但是它的生成速度比较慢.
你还可以使用Apache Commons Lang库中的RandomStringUtils.random(int count, char[] chars)方法生成随机密码, 这个方法比较方便, 但是需要导入库文件.
### 回答2:
要用Java生成8到20位随机密码,可以使用Java内置的随机数生成器来实现。下面是一个示例代码:
```java
import java.util.Random;
public class RandomPasswordGenerator {
public static void main(String[] args) {
int minLength = 8; // 最小密码长度
int maxLength = 20; // 最大密码长度
// 生成密码长度,介于 minLength 和 maxLength 之间(包含边界值)
int length = new Random().nextInt(maxLength - minLength + 1) + minLength;
// 所有可能出现的字符
String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()";
// 生成密码
StringBuilder password = new StringBuilder();
Random random = new Random();
for (int i = 0; i < length; i++) {
// 随机选择一个字符
char c = characters.charAt(random.nextInt(characters.length()));
password.append(c);
}
System.out.println("随机生成的密码为:" + password.toString());
}
}
```
以上代码使用`Random`类中的`nextInt`方法生成一个介于`minLength`和`maxLength`之间(包含边界值)的随机数作为密码长度。然后使用一个字符集合来存储可能出现的字符,包括大写字母、小写字母、数字和特殊字符。最后,利用`for`循环和`Random`类中的`nextInt`方法在字符集合中随机选择字符,并将其添加到密码字符串中,直到达到密码长度。最终输出生成的随机密码。
### 回答3:
要用Java生成8到20位的随机密码,可以使用Java的随机数生成器和字符数组。步骤如下:
1. 首先,创建一个包含所有可能的密码字符的字符数组,包括大小写字母、数字和特殊字符等。
2. 使用Java的随机数生成器生成一个随机数,作为密码长度。可以使用Random类来实现,例如:
```
Random random = new Random();
int passwordLength = random.nextInt(13) + 8; // 生成8到20之间的随机数
```
3. 创建一个StringBuilder对象,用于生成最终的密码。
4. 使用一个循环,在每次迭代中从字符数组中随机选择一个字符,并将其附加到StringBuilder对象中,直到生成的密码长度达到要求。例如:
```
char[] characters = { /* 包含所有可能的密码字符的数组 */ };
StringBuilder passwordBuilder = new StringBuilder();
for (int i = 0; i < passwordLength; i++) {
int index = random.nextInt(characters.length);
passwordBuilder.append(characters[index]);
}
String password = passwordBuilder.toString();
```
5. 最后,将StringBuilder对象转换为字符串,即为生成的随机密码。
注意,生成的密码可能包含重复字符,如果需要避免这种情况,可以在生成密码的过程中进行去重操作。
希望以上回答能够帮到您。
相关推荐
![java](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)