10 gün kadar önce Java'da kullanıcının istediği kadar basamaktan oluşan bir şifre üretme algoritması geliştirerek Java ile rasgele parola üretmek örneğini paylaşmıştım. Ama gerçek hayatta güvenli bir parola kullanmamız gerektiği için algoritmamızı bir aşama ileri götürerek aşağıdaki güvenli parola şartlarını sağlayan bir parola üretmesini sağlayalım.
İnternette çok sayıda parola üretimi ile ilgili package var. Ama bizim amacımız parola üretmek değil, basit bir güvenli parola üretme algoritması geliştirmek olduğu için bu paketleri kullanmak yerşne kendi algoritmamızı geliştireceğiz. Güvenli parolamız için:
- Büyük harf karakterleri, küçük harf karakterleri, sayısal karakterler ve özel karakterleri kullanarak 20 basamaklı bir şifre üretelim.
Not: Düşük bir olasılık ile olsa da üretilecek şifrenin hiç özel karakter ya da sayısal karakter üretmemesi mümkün. Bu yüzden bir ileri aşamada gözcü kontroller eklenebilir.
Güvenli parola üretme algoritma kodları:
char[] karakterlerBuyuk = { 'A', 'B', 'C', 'D',
'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' }; //26
char[] karakterlerKucuk = { 'a', 'b', 'c', 'd',
'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; //26
char[] karakterlerSayisal = { '0', '1', '2', '3', '4',
'5', '6', '7', '8', '9' }; //10
char[] karakterlerOzel = { '~', '!', '@', '#',
'$', '%', '^', '&', '*', '(', ')', '-', '_', '=', '+', '[', '{',
']', '}', '\\', '|', ';', ':', '\'', '"', ',', '<', '.', '>', '/',
'?' }; //30
StringBuilder sb=new StringBuilder();
for (int i=0; i<20; i++)
{
int rasgele = new Random().nextInt(4); //0 ile 3 arası
if (rasgele==0)
{
int rasgeleKarakter=new Random().nextInt(26);
sb.append(karakterlerBuyuk[rasgeleKarakter]);
}
else if (rasgele==1)
{
int rasgeleKarakter=new Random().nextInt(26);
sb.append(karakterlerKucuk[rasgeleKarakter]);
}
else if (rasgele==2)
{
int rasgeleKarakter=new Random().nextInt(10);
sb.append(karakterlerSayisal[rasgeleKarakter]);
}
else if (rasgele==3)
{
int rasgeleKarakter=new Random().nextInt(30);
sb.append(karakterlerOzel[rasgeleKarakter]);
}
}
System.out.println("Şifreniz: "+sb.toString());
Çıktı:
Şifreniz: 5670OM5I#*DYd@c3@k8h