java 生成8位随机密码

package com.fastone.www.javademo.randomtest;

import java.util.Random;

/**
 * @program: javademo
 * @description: 生成8位随机密码
 * @author: sunyuhua
 * @create: 2021-11-25 12:43
 **/
public class CreateNewPassword {

	public static void main(String[] args) {
		System.out.println("==="+randomPassword());
	}

	private static final String SPECIAL_CHARS = "! @#$%^&*_=+-/";

	private static char nextChar(Random rnd){
		switch(rnd.nextInt(4)){
			case 0:
				return (char)('a'+rnd.nextInt(26));
			case 1:
				return (char)('A'+rnd.nextInt(26));
			case 2:
				return     (char)('0'+rnd.nextInt(10));
			default:
				return SPECIAL_CHARS.charAt(rnd.nextInt(SPECIAL_CHARS.length()));
		}
	}
	public static String randomPassword(){
		char[] chars = new char[8];
		Random rnd = new Random();
		for(int i=0; i<8; i++){
			chars[i] = nextChar(rnd);
		}
		return new String(chars);
	}
}

输出结果(每一次都不一样):

11uL$=6V
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答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对象转换为字符串,即为生成随机密码。 注意,生成密码可能包含重复字符,如果需要避免这种情况,可以在生成密码的过程中进行去重操作。 希望以上回答能够帮到您。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MonkeyKing.sun

对你有帮助的话,可以打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值