随机密码生成类

本文介绍了一个Java实现的随机密码生成器,可以根据需求设置密码包含的字符类型(如数字、大小写字母、特殊符号等),并定义了默认长度为8位的密码。提供了完整的代码示例及如何设置参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接看代码

import java.util.ArrayList;
import java.util.List;
import java.util.Random;


public class RandomPwdUtils {
    public final static int FLAG_NUMBER = 0x00000001;
    public final static int FLAG_LOWER_CASE = 0x00000002;
    public final static int FLAG_UPPER_CASE = 0x00000004;
    public final static int FLAG_SPECIAL_SYMBOLS = 0x00000008;
    private List<String> pwdCharacterList;

    public int flags = -1;
    public int length = 8;

    /**
     * 注意设置flags,默认生成密码8位
     */
    public RandomPwdUtils() {
        pwdCharacterList = new ArrayList<>();
    }

    /**
     * 生成密码
     *
     * @return
     */
    public String generatePassword() {
        addCharacter();
        Random random = new Random();
        StringBuilder sb = new StringBuilder(length);
        for (int i = 0; i < length; i++) {
            int index = random.nextInt(pwdCharacterList.size());
            sb.append(pwdCharacterList.get(index));
        }
        return sb.toString();
    }

    private void addCharacter() {
        if (flags == -1)
            throw new IllegalArgumentException("请设置flags的值");
        pwdCharacterList.clear();
        if ((flags & FLAG_NUMBER) == FLAG_NUMBER) {
            addNumber();
        }
        if ((flags & FLAG_LOWER_CASE) == FLAG_LOWER_CASE) {
            addLowerCase();
        }
        if ((flags & FLAG_UPPER_CASE) == FLAG_UPPER_CASE) {
            addUpperCase();
        }
        if ((flags & FLAG_SPECIAL_SYMBOLS) == FLAG_SPECIAL_SYMBOLS) {
            addSpecialSymbols();
        }
    }


    /**
     * 添加数字
     */
    private void addNumber() {
        for (int i = 0; i < 10; i++) {
            pwdCharacterList.add(i + "".toUpperCase());
        }
    }

    /**
     * 添加小写字母 a-z
     */
    private void addLowerCase() {
        for (int i = 97; i <= 122; i++) {
            pwdCharacterList.add(String.valueOf((char) i));
        }
    }

    /**
     * 添加大写字母 A-Z
     */
    private void addUpperCase() {
        for (int i = 65; i < 91; i++) {
            pwdCharacterList.add(String.valueOf((char) i));
        }
    }

    /**
     * 添加特殊符号
     */
    private void addSpecialSymbols() {
        pwdCharacterList.add("@");
        pwdCharacterList.add("#");
        pwdCharacterList.add("$");
        pwdCharacterList.add("%");
        pwdCharacterList.add("!");
    }

}

使用

        RandomPwdUtils utils = new RandomPwdUtils();
        utils.flags = RandomPwdUtils.FLAG_NUMBER | RandomPwdUtils.FLAG_LOWER_CASE;//设置有哪些字符,通过|符号连接
        utils.length = 10;//设置长度
        utils.generatePassword();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值