我是靠谱客的博主 无私樱桃,最近开发中收集的这篇文章主要介绍随机密码生成类,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

直接看代码

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();

最后

以上就是无私樱桃为你收集整理的随机密码生成类的全部内容,希望文章能够帮你解决随机密码生成类所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部