Böyle bir şifre oluşturmaya ihtiyacım olmuştu ve aşağıda gibi bir şey yaptım umarım işinize yarar.
import java.util.ArrayList;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
public class Sifre {
public static void main(String[] args) {
String pswrd = "";
ArrayList<String> sayilar = new ArrayList<String>();
ArrayList<String> kucukHarfler = new ArrayList<String>();
sayilar.add("0"); sayilar.add("1");
sayilar.add("2"); sayilar.add("3");
sayilar.add("4"); sayilar.add("5");
sayilar.add("6"); sayilar.add("7");
sayilar.add("8"); sayilar.add("9");
kucukHarfler.add("a"); kucukHarfler.add("b");
kucukHarfler.add("c"); kucukHarfler.add("d");
kucukHarfler.add("e"); kucukHarfler.add("f");
kucukHarfler.add("g"); kucukHarfler.add("h");
kucukHarfler.add("i"); kucukHarfler.add("j");
kucukHarfler.add("k"); kucukHarfler.add("l");
kucukHarfler.add("m"); kucukHarfler.add("n");
kucukHarfler.add("o"); kucukHarfler.add("p");
kucukHarfler.add("q"); kucukHarfler.add("r");
kucukHarfler.add("s"); kucukHarfler.add("t");
kucukHarfler.add("u"); kucukHarfler.add("v");
kucukHarfler.add("w"); kucukHarfler.add("y");
kucukHarfler.add("z"); kucukHarfler.add("x");
ArrayList<String> liste = new ArrayList<String>();
//Benim ihtiyacım olan şifre 2 küçük harf, 2 büyük harf, 2 sayi
// ve diğer ikisi rastgele karakter olan 8 karakterlik bir şifreydi
//önce for içinde rastgele 3 değer alıp bu değerlere karşılık gelen
//karakterleri dizinin içine atıyorum
for (int i = 0; i < 2; i++) {
int randomKucuk1 = (1 + (int) (Math.random() * 26));
int randomBuyuk1 = (1 + (int) (Math.random() * 26));
int randomSayi1 = (1 + (int) (Math.random() * 10));
liste.add(kucukHarfler.get(randomKucuk1-1));
String buyukHarf =kucukHarfler.get(randomBuyuk1-1);
liste.add(buyukHarf.toUpperCase());
liste.add(sayilar.get(randomSayi1-1));
//burda randomKucuk1 sayisi rastegele olacağı için,
//26 değerlik diziyi 3 parçaya ayırdım ve gelen değerlere
//göre küçük, büyük harf ya da sayı aldım.
if(randomKucuk1<10){
int randomKucuk2 = (1 + (int) (Math.random() * 26));
liste.add(kucukHarfler.get(randomKucuk2-1));
}
else if(randomKucuk1<20 && randomKucuk1>=10) {
int randomBuyuk2 = (1 + (int) (Math.random() * 26));
String bykHarf =kucukHarfler.get(randomBuyuk2-1);
liste.add(bykHarf.toUpperCase());
}
else {
int randomSayi2 = (1 + (int) (Math.random() * 10));
liste.add(sayilar.get(randomSayi2-1));
}
// döngü 2 defa döndüğü için toplamda 8 karakter elde ediyoruz
}
// burda da oluşturduğumuz şifre sabit bir sırayla olmaması için
//üstte ki arraylist i karıştırıyorum.
for (int i = 8; i >= 1; i--) {
int deger = (1 + (int) (Math.random() * i));
pswrd += liste.get(deger - 1);
liste.remove(deger - 1);
}
System.out.println("sifre:"+pswrd);
}
}