随机密码生成类

直接看代码

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();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值