Android Studio|生成一个包含字母、数字和特殊字符的随机密码序列

需求

最近因为一个Android studio项目,需要简单的添加一个密码生成器,主要生成一个包含字母、数字和某些特殊字符的一个任意长度的随机密码序列供用户使用,其中字母、数字和特殊字符都可以通过SeekBar根据需求进行选择
在这里插入图片描述

实现

  1. 首先新建一个密码生成类PasswordCreate
  2. 初始化密码长度和密码包含类型
	private int pwd_len; //密码长度
    private int signal; //密码包含类型设置标志

    public void setPwd_len(int pwd_len) {
        this.pwd_len = pwd_len;
    }

    public void setSignal(int signal) {
        this.signal = signal;
    }
其中signal参数表示三个SeekBar的开关状态,0为非选中状态,1为选中状态,通过0、1组合形成三位二进制数字,调用该类时转换成十进制形式传入
  1. 实现生成一个随机密码序列的方法
public String getPassword() {
        final int maxChar = 82; //密码序列包含的字符类型个数
        int i;
        int count = 0;
        char[] str = {'a', 'A', 'b', 'B', 'c', 'C', 'd', 'D', 'e', 'E', 'f', 'F', 'g', 'G', 'h',
                'H', 'i', 'I', 'j', 'J', 'k', 'K', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
                'v', 'w', 'x', 'X', 'y', 'Y', 'z', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                '!', '#', '$', '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', '\'', '"',
                ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`', '{', '|', '}', '~'};
        StringBuilder pwd = new StringBuilder("");
        Random random = new Random();
        switch (signal) {
            case 0: //只含小写字母
                while (count < pwd_len) {
                    i = Math.abs(random.nextInt(maxChar));
                    if (i >= 0 && i < str.length) {
                        if (str[i] >= 97 && str[i] <= 122) {
                            pwd.append(str[i]);
                            count++;
                        }
                    }
                }
                break;
            case 1: //小写字母、字符
                while (count < pwd_len) {
                    i = Math.abs(random.nextInt(maxChar));
                    if (i >= 0 && i < str.length) {
                        if (str[i] >= 97 && str[i] <= 122 || str[i] <= 47 || str[i] >= 58
                                && str[i] <= 64 || str[i] >= 91 || str[i] <= 96 && str[i] >= 123) {
                            pwd.append(str[i]);
                            count++;
                        }
                    }
                }
                break;
            case 2: // 小写字母、数字
                while (count < pwd_len) {
                    i = Math.abs(random.nextInt(maxChar));
                    if (i >= 0 && i < str.length) {
                        if (str[i] >= 97 && str[i] <= 122 || str[i] >= 48 && str[i] <= 57) {
                            pwd.append(str[i]);
                            count++;
                        }
                    }
                }
                break;
            case 3: //小写字母、数字、字符
                while (count < pwd_len) {
                    i = Math.abs(random.nextInt(maxChar));
                    if (i >= 0 && i < str.length) {
                        if (str[i] >= 97 && str[i] <= 122 || str[i] >= 48 && str[i] <= 57
                                || str[i] <= 47 || str[i] >= 58 && str[i] <= 64 || str[i] >= 91
                                && str[i] <= 96 || str[i] >= 123) {
                            pwd.append(str[i]);
                            count++;
                        }
                    }
                }
                break;
            case 4: //大小写字母
                while (count < pwd_len) {
                    i = Math.abs(random.nextInt(maxChar));
                    if (i >= 0 && i < str.length) {
                        if (str[i] >= 65 && str[i] <= 90 || str[i] >= 97 && str[i] <= 122) {
                            pwd.append(str[i]);
                            count++;
                        }
                    }
                }
                break;
            case 5: //大小写字母、字符
                while (count < pwd_len) {
                    i = Math.abs(random.nextInt(maxChar));
                    if (i >= 0 && i < str.length) {
                        if (str[i] >= 65 && str[i] <= 90 || str[i] >= 97 && str[i] <= 122
                                || str[i] <= 47 || str[i] >= 58 && str[i] <= 64 || str[i] >= 91
                                && str[i] <= 96 || str[i] >= 123) {
                            pwd.append(str[i]);
                            count++;
                        }
                    }
                }
                break;
            case 6: //大小写字母、数字
                while (count < pwd_len) {
                    i = Math.abs(random.nextInt(maxChar));
                    if (i >= 0 && i < str.length) {
                        if (str[i] >= 65 && str[i] <= 90 || str[i] >= 97 && str[i] <= 122
                                || str[i] >= 48 && str[i] <= 57) {
                            pwd.append(str[i]);
                            count++;
                        }
                    }
                }
                break;
            case 7: //大小写字母、数字、字符
                while (count < pwd_len) {
                    i = Math.abs(random.nextInt(maxChar));
                    if (i >= 0 && i < str.length) {
                        if (str[i] >= 65 && str[i] <= 90 || str[i] >= 97 && str[i] <= 122
                                || str[i] >= 48 && str[i] <= 57 || str[i] <= 47 || str[i] >= 58
                                && str[i] <= 64 || str[i] >= 91 && str[i] <= 96 || str[i] >= 123) {
                            pwd.append(str[i]);
                            count++;
                        }
                    }
                }
                break;
            default:
        }
        return pwd.toString();
    }
  1. 程序运行结果显示:
    在这里插入图片描述
    在这里插入图片描述
    至此,一个简单的密码生成工具就全部实现了!
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值