Ejemplo n.º 1
0
  private void makePass() {
    setStringD();

    // 文字数決定/////////////////////////////////////////////////////////////////////////////////
    // 文字数決定/////////////////////////////////////////////////////////////////////////////////
    int numN = 0;
    int numB = 0;
    int numS = 0;
    int numK = 0;
    int i = 0;
    if (chbk) {
      numK++;
      i++;
    }
    for (; i < totalNum; ) {
      if (chbs) {
        numS++;
        i++;
      }
      if (chbb && i < totalNum) {
        numB++;
        i++;
      }
      if (chbnum && i < totalNum) {
        numN++;
        i++;
      }
    }

    Log.e(
        "合計",
        numK + numB + numN + numS + ":numk::" + numK + ":numB::" + numB + ":numN::" + numN
            + ":numS::" + numS + "");
    // 文字数決定/////////////////////////////////////////////////////////////////////////////////

    // 文字の切り出し/////////////////////////////////////////////////////////////////////////////
    // 文字の切り出し/////////////////////////////////////////////////////////////////////////////
    // ナンバー下○桁
    if (chbnum && numN > 0) {
      if (passN.length() >= numN) {
        passN = passN.substring(passN.length() - numN, passN.length());
        // 各桁に数字を足したり引いたり
        Log.e("passN", passN);
      } else {
        // 文字数が足りてないときの処理
        Log.e("passN", "文字不足");
      }
      passN = plusNumber(passN);
    }
    // 文字上○桁
    if (chbb && numB > 0) {
      if (passM1.length() >= numB) {
        passM1 = passM1.substring(0, numB);
        Log.e("passM1", passM1);
      } else {
        // 文字数が足りないとき
        numB = passM1.length();
        Log.e("passM1", "文字不足");
      }
    }
    // 文字上○桁
    if (chbs && numS > 0) {
      if (passM2.length() >= numS) {
        passM2 = passM2.substring(0, numS);

      } else {
        numS = passM2.length();
        Log.e("passM2", "文字不足");
      }
    }

    if (chbk && numK > 0) {
      int randNum = new java.util.Random().nextInt(partsSign.length());
      passS = passS.substring(randNum, randNum + 1);
      Log.e("passS", passS);
    }
    // 文字の切り出し/////////////////////////////////////////////////////////////////////////////

    // ミックスする/////////////////////////////////////////////////////////////////////////
    // ミックスする////////////////////////////////////////////////////////////////////////
    StringBuilder stringB = new StringBuilder();
    stringB.append(passM1);
    stringB.append(passM2);
    String strtemp1 = stringB.toString();

    String strtemp2 = "";
    StringBuilder stringC = new StringBuilder();
    // ミックス
    Log.e("passM1", passM1); // zxyvw
    Log.e("passM2", passM2); // aiu
    if (passM1.length() < passM2.length()) {
      for (int k = 0; k < passM1.length(); k++) {
        stringC.append(passM1.substring(k, k + 1));
        stringC.append(passM2.substring(k, k + 1));
      }
      int temp = passM2.length() - passM1.length();
      stringC.append(passM2.substring(temp + 1, passM2.length()));
    } else if (passM1.length() > passM2.length()) {
      for (int k = 0; k < passM2.length(); k++) {
        stringC.append(passM1.substring(k, k + 1));
        stringC.append(passM2.substring(k, k + 1));
      }
      int temp = passM1.length() - passM2.length();
      stringC.append(passM1.substring(temp + 1, passM1.length()));
    } else {
      for (int k = 0; k < passM2.length(); k++) {
        stringC.append(passM1.substring(k, k + 1));
        stringC.append(passM2.substring(k, k + 1));
      }
    }

    // ミックスする/////////////////////////////////////////////////////////////////////////

    // 大きなセットができる//////////////////////////////////////////////////////////////////
    // 大きなセットができる//////////////////////////////////////////////////////////////////
    StringBuilder stb = new StringBuilder();
    if (chbb) {
      poolString.setElem1S(passM1E);
      poolString.setElem1N(String.valueOf(numB));
      stb.append(passM1);
    }
    if (chbs) {
      poolString.setElem2S(passM2E);
      poolString.setElem2N(String.valueOf(numS));
      stb.append(passM2);
    }
    if (chbk) {
      poolString.setSign(passS);
      stb.append(passS);
    }
    if (chbnum) {
      poolString.setnElemS(passNE);
      if (passN.length() > numN) {
        poolString.setnElemN(String.valueOf(numN));
      } else {
        poolString.setnElemN(String.valueOf(passN.length()));
      }
      stb.append(passN);
    }
    // 大きなセットができる//////////////////////////////////////////////////////////////////

    // ランダムで大文字をはめ込む
    String haveUpp = randomUpperString(stb.toString());
    int stringLength = passM1.length() + passM2.length();
    int tempRnad = new java.util.Random().nextInt(2);
    for (int j = 0; j < tempRnad; j++) {
      haveUpp = randomUpperString(haveUpp);
    }
    // 文字が少ない場合繰り返す
    String minipass = loopMakePass(haveUpp, totalNum);

    if (chbb && !chbs) {
      minipass = minipass.toUpperCase();
    }
    if (!chbb && chbs) {
      minipass = minipass.toLowerCase();
    }

    gp_txv_pass.setText(minipass);
    gp_txv_hint.setText(poolString.makeString());

    passHint = poolString.makeString();
    fixed_pass = minipass;
    txvSheep.setText(setComment());
  }