当前位置: 首页 > 知识库问答 >
问题:

使用Android创建强大的密码生成器

林弘文
2023-03-14

因此,我正在构建一个应用程序,它可以根据用户的规范生成一个强密码。UI的spec部分如下所示。

下面是MainActivity.java类中的onCreate。我尝试创建一些逻辑,如选中某个单选按钮时的if语句,以及选中复选框时向String变量添加允许的字符。视图对象都是全局的btw,但我不知道如何在用户设置的字符限制范围内,使用每个允许的字符中的至少一个来创建一个随机字符串

代码如下:

private static int MAX_LENGTH;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        capitalLetter = (CheckBox) findViewById(R.id.capital_letter);
        lowercaseLetter = (CheckBox) findViewById(R.id.lowercase_letter);
        numbers = (CheckBox) findViewById(R.id.numbers);
        symbols = (CheckBox) findViewById(R.id.symbols);

        passGroup = (RadioGroup) findViewById(R.id.passRadioGroup);

        sizeFour = (RadioButton) findViewById(R.id.size_four);
        sizeEight = (RadioButton) findViewById(R.id.size_eight);
        sizeTwelve = (RadioButton) findViewById(R.id.size_twelve);
        sizeSixteen = (RadioButton) findViewById(R.id.size_sixteen);

        passHint = (EditText) findViewById(R.id.passwordHint);

        passShow = (TextView) findViewById(R.id.passwordDisplay);

        passGenerate = (Button) findViewById(R.id.passwordGenerate);
        passClear = (Button) findViewById(R.id.passwordClear);

        String allowedCharacters = "";

        // Determines the types of characters permitted when a check box is checked.
        if (capitalLetter.isChecked()) {allowedCharacters += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";}
        if (lowercaseLetter.isChecked()) {allowedCharacters += "abcdefghijklmnopqrstuvwxyz";}
        if (numbers.isChecked()) {allowedCharacters += "0123456789";}
        if (symbols.isChecked()) {allowedCharacters += "!@#$%^&*()_-+=<>?/{}~|";}

        //Determines the length of the string based on which radio button the user has selected.
        int checkedRadioButtonId = passGroup.getCheckedRadioButtonId();

        if (checkedRadioButtonId == 1) {MAX_LENGTH = 4;}
        if (checkedRadioButtonId == 2) {MAX_LENGTH = 8;}
        if (checkedRadioButtonId == 3) {MAX_LENGTH = 12;}
        if (checkedRadioButtonId == 4) {MAX_LENGTH = 16;}
    }

共有1个答案

毋宸
2023-03-14

关于生成随机字符串的基本思想:

private static final String ALLOWED_CHARACTERS ="0123456789qwertyuiopasdfghjklzxcvbnm";

private static String getRandomString(final int sizeOfPasswordString){
  final Random random=new Random();
  final StringBuilder sb=new StringBuilder(sizeOfPasswordString);

  for(int i=0;i<sizeOfRandomString;++i){
      sb.append(ALLOWED_CHARACTERS.charAt(random.nextInt(ALLOWED_CHARACTERS.length())));
    return sb.toString();
  }
}
 类似资料:
  • 如何在Java中使用构建器创建一个火花会话?我试过这个: 但我在“getOrCreate”中遇到了一个例外。是否有任何方法可以使用JavaSparkContext/SparkContext创建spark会话? 线程“main”中的异常java.lang.NoSuchmetodError:6.applyUserGroupIession.scala:860MONtUser()Lorg/apache/h

  • <?php $pw='simplewind'; $afpw=sp_password($pw);//加密字符串 echo $afpw;//输出加密后的字符串 ?>

  • 我真的很挣扎,以获得生成强密码-功能在马应用程序内完成... 这是我的网站:。我已经在我的应用程序中设置了关联域和自动填充凭据提供程序,如下所示: 我想这就是我需要在我的应用程序网站上做的所有事情,对吗?我知道我必须与苹果应用程序网站协会合作,但这是我努力的一部分,我找不到任何好的教程。。。 我遵循了这个指南,但我不知道如何实现第二步。我不知道如何创建这个

  • 本文向大家介绍Shell创建用户并生成随机密码脚本分享,包括了Shell创建用户并生成随机密码脚本分享的使用技巧和注意事项,需要的朋友参考一下 创建随机数的方法: 在Linux中有一个设备/dev/urandom是用来产生随机数序列的。利用该设备我们可以根据在需要生成随机字符串。 比如我们要产生一个8位的字母和数字混合的随机密码,可以这样: 其实,linux已经提供有个系统环境变量了。 可能有疑问

  • 问题内容: 有人可以推荐使用Apache或LGPL Java许可下的安全密码生成器吗? 问题答案: 我不必担心生成令人难以置信的强大一次性密码。设置较长的密码,如果您限制密码的有效期限,那么蛮力应该不是问题。如果密码仅在1个小时内有效,那么如果密码未使用则不会有问题。在这段时间内,不太可能有人会用蛮力破解它。 同样重要的是,您只能一次使用一次密码。这样,如果密码被截获,用户将在一次密码到期时注意到

  • 我正在尝试创建一个创建密码的java程序,无论是所有小写、小写和大写、小写和大写和数字、小写和大写以及数字和标点符号,该程序还必须创建用户选择的密码之一,并且必须根据用户选择的内容生成密码长度。我已经生成了密码选项供用户选择,并提示他选择一个。我现在被困在如何创建上面提到的密码类型上。一个人建议我使用ASCII值,然后将它们转换为文本。我知道如何将它们转换为文本,但它会显示数字、字母和标点符号。有