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