如果这包括那个(java密码生成器)[关闭]

Posted

技术标签:

【中文标题】如果这包括那个(java密码生成器)[关闭]【英文标题】:If this then include that (java password generator) [closed] 【发布时间】:2021-11-08 03:05:09 【问题描述】:

我正在制作密码生成器,我希望用户可以选择是否要包含大写/小写字母、特殊字符和数字,但我不知道如何使用我拥有的代码执行此操作现在不用做太多的 if 语句。

private static final String ALPHA_CAPS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private static final String ALPHA = "abcdefghijklmnopqrstuvwxyz";
private static final String NUMERIC = "0123456789";
private static final String SPECIAL_CHARS = "!@#$%^&*_=+-/";
private static SecureRandom random = new SecureRandom(); 

以上是可用于生成密码的不同字符。

public void generatePasswordAgain(ActionEvent event) throws IOException 
    genPassword.setText(generatePassword(length, ALPHA_CAPS + ALPHA + SPECIAL_CHARS + NUMERIC));

上面是要生成密码时调用的函数。下面是实际生成密码的代码。

public static String generatePassword(int len, String dic) 
    String result = "";
    for (int i = 0; i < len; i++) 
        int index = random.nextInt(dic.length());
        result += dic.charAt(index);
    
    return result;

我想让使用该程序的人有机会选择他们想要包含在他们的程序中的字符类型。有没有一种方法可以做到这一点而不需要过多的 if 语句?

人们对他们想要包含的字符的需求由布尔值定义。

【问题讨论】:

您的问题到底是什么?你不知道如何根据条件执行代码? OP 希望传递参数以根据每种字符集的布尔标志生成密码。 【参考方案1】:

如果你想避免 switch case 和 if else 级联,你可以使用单行三元运算符。

private static final String EMPTY = "";

... // StringUtils.EMPTY can also be used.

boolean alphaUpper, alphaLower, numeric, special;

... // set your boolean flags here

genPassword.setText(generatePassword(length, (alphaUpper ? ALPHA_CAPS : EMPTY) + (alphaLower ? ALPHA : EMPTY) + (special ? SPECIAL_CHARS : EMPTY) + (numeric ? NUMERIC : EMPTY)));

【讨论】:

以上是关于如果这包括那个(java密码生成器)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

谁能帮 我把学校的那个ftp的登录的密码还有用户名告诉我啊 ?

linux下字典生成工具-crunch与rtgen

测试工具研发_生成随机密码

网页保存密码找回

CentOS7 SSH免密码登录和关闭密码登录

如何在java中加密密码管理器的密码[关闭]