John

Tevfik Bulut

Data Scientist

Web Site

Linkedin

RPubs

Contact

Creativity is just connecting things. When you ask creative people how they did something, they feel a little guilty because they didn’t really do it, they just saw something. It seemed obvious to them after a while. That’s because they were able to connect experiences they’ve had and synthesize new things. Steve Jobs

İçindekiler

Intro

In this study, it is aimed to create awareness in the subject area by making password generation practices with both English and Turkish characters.

Giriş

R’daki bu çalışmada hem Türkçe hem de ingilizce karakterlerle her iki dilde şifre üretme algoritması yazılmıştır. Üretilen fonksiyonlar üzerinden hem ingilizce hem de Türkçe dilinde istenilen hanede ve istenilen sayıda gerek tablo gerekse vektör formatında şifre üretilebilmektedir.

Yüklenen Kütüphaneler

kütüphane<-c("dplyr","tibble","tidyr","readxl", "writexl", "kableExtra", "report", "citation", "rmarkdown")
yükle<-sapply(kütüphane, require, character.only = TRUE, warn.conflicts = FALSE)
 
#Kütüphane yüklenme durumunu gösteren tablo
 
tibble(Sıra=1:length(kütüphane), Kütüphane=names(yükle), Durumu=as.logical(yükle)) %>% mutate(Durumu=if_else(Durumu==TRUE, "Yüklendi", "Paket Kurulumu Gerekli")) %>% 
kable(caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: center;background-color: #0077b5;color:white;font-family: arial; font-size: 20px;font-weight: bold;border: 3px solid #0e76a8;box-shadow: 10px 10px 20px grey',"Yüklenen Kütüphanelerin Listesi")) %>% 
kable_styling(bootstrap_options = c("striped", "hover"),font_size = 16) %>% row_spec(0, bold = T, color = "black") 
Yüklenen Kütüphanelerin Listesi
Sıra Kütüphane Durumu
1 dplyr Yüklendi
2 tibble Yüklendi
3 tidyr Yüklendi
4 readxl Yüklendi
5 writexl Yüklendi
6 kableExtra Yüklendi
7 report Yüklendi
8 citation Yüklendi
9 rmarkdown Yüklendi

Uygulama

İç İçe For Döngüsü İle İngilizce Şifre Üretme

set.seed(61)
sifre=function(hane=6, adet=5){
  for (s in sample(0:9, size=1, replace = F)) {
    for(i in sample(LETTERS, size=1, replace = F)){
      for(f in sample(0:9, size=1, replace = F)){
        for(r in sample(letters, size=1, replace = F)){
          for(e in sample(0:9, size=1, replace = F)){
            tablo=replicate(paste(sample(c(s,i,f,r,e), size=hane, replace = T), sep="", collapse = ""), n=adet)%>%
              as_tibble() %>% 
              rename(Şifre=value)%>% 
              mutate("Hane Sayısı"=hane) %>% 
              add_column(Sıra=1:adet, .before="Şifre") %>%
              select(Sıra,"Şifre", "Hane Sayısı")%>%
            kable(caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: center;background-color: #0077b5;color:white;font-family: arial; font-size: 20px;font-weight: bold;border: 3px solid #0e76a8;box-shadow: 10px 10px 20px grey',"Üretilen Şifrelerin Listesi")) %>% 
kable_styling(bootstrap_options = c("striped", "hover"),font_size = 16) %>% row_spec(0, bold = T, color = "black") 
            return(tablo)
          }
        }   
      }
    }
  }   
            
  
}

#üretilecek şifre adetini ve hanesini yazınız.
sifre(hane=10, adet=25)  
Üretilen Şifrelerin Listesi
Sıra Şifre Hane Sayısı
1 jW9W6j69jj 10
2 9j9j889899 10
3 j88999896W 10
4 W6WWWWW66W 10
5 6668jW9668 10
6 696WWj6W89 10
7 6WW8998j6j 10
8 6jjjWj6jj8 10
9 j699j98jWW 10
10 8W88WW8W9j 10
11 6jj88j8696 10
12 W86W88699j 10
13 9j89jW6988 10
14 86Wj68WjW6 10
15 9j9j9j88Wj 10
16 W9669j9689 10
17 866Wj6Wj68 10
18 WWW698888j 10
19 6W8999j9W8 10
20 8W98W6jW8W 10
21 j9j9WW99j6 10
22 898j696j86 10
23 8jW9W6jW9j 10
24 668986W998 10
25 8j8j669896 10

İsme Göre Şifre Üretme

Buradaki amaç, şifrenin hem hatırlanması hem daha komplike olması sağlanarak daha güçlü olmasının sağlanmasıdır.Aşağıdaki kod bloğunda girilen isim karakterlerinden hareketle şifre oluşturulmuştur. İsimde yer alan harfler küçük ve büyük karakterlere dönüştürülmüş, ardından ise şifre kombinasyonunu daha da güçlendirmek adına kombinasyona rakamlar ile noktalama ve matematiksek operatörleri ilave edilmiştir. Kombinasyonda default olarak Necmi Gülyutmaz isminden hareket edilmiştir. Bu isim varsayımsal olarak alınmıştır. Böyle bir isim var mıdır yok mudur bilmiyorum. Fonksiyona aşağıda isim girilmediği takdirde bu isme göre şifre kombinasyonu üretilecektir anlamına gelmektedir.İsimde tekrarlanan karakterlerden bir tanesi alınmıştır. Burada unique() fonksiyonu kullanılmıştır.İsim vektöründe karakterlere kombinasyonda 3 kat daha yüksek seçilme şansı verilmiştir.Kombinasyonun oluşturulmasında iç içe for döngüleri (nested-for loops) kullanılmıştır.

set.seed(61)
sifre=function(isim="Necmi Gülyutmaz", hane=6, adet=5){
bisim = sub(' ','',isim)
m=strsplit(bisim, "")[[1]]
visim=unique(as.vector(m))
ni=c("!",  "#", "$", "%", "&", "(", ")", "*",  "+", "-", "/", ":", ";", "<", "=", ">", "?", "@", "[", "^", "_", "{", "|", "}", "~")
  for (s in sample(0:9, size=1, replace = F)) {
    for(i in sample(tolower(visim), size=1, replace = F)){
      for(f in sample(0:9, size=1, replace = F)){
        for(r in sample(toupper(visim), size=1, replace = F)){
          for(e in sample(ni, size=1, replace = F)){
            tablo=replicate(paste(sample(c(s,rep(i,3),f,rep(r,3),e), size=hane, replace = T), sep="", collapse = ""), n=adet)%>%
              as_tibble() %>% 
              rename(Şifre=value)%>% 
              mutate("Hane Sayısı"=hane, İsim=isim) %>% 
              add_column(Sıra=1:adet, .before="Şifre") %>%
              select(Sıra,İsim, "Şifre", "Hane Sayısı")%>%
            kable(caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: center;background-color: #0077b5;color:white;font-family: arial; font-size: 20px;font-weight: bold;border: 3px solid #0e76a8;box-shadow: 10px 10px 20px grey',"Üretilen Şifrelerin Listesi")) %>% 
kable_styling(bootstrap_options = c("striped", "hover"),font_size = 16) %>% row_spec(0, bold = T, color = "black") 
            return(tablo)
          }
        }   
      }
    }
  }   
  
  
}

#üretilecek şifre için isminizi, şifre adetini ve hanesini yazınız.
sifre(hane=6, adet=10)  
Üretilen Şifrelerin Listesi
Sıra İsim Şifre Hane Sayısı
1 Necmi Gülyutmaz üü6ü+ü 6
2 Necmi Gülyutmaz UUüU9ü 6
3 Necmi Gülyutmaz 9UüüUü 6
4 Necmi Gülyutmaz 9U+üü+ 6
5 Necmi Gülyutmaz Uüüü+6 6
6 Necmi Gülyutmaz üU6+69 6
7 Necmi Gülyutmaz üü669+ 6
8 Necmi Gülyutmaz ü6ü+ü6 6
9 Necmi Gülyutmaz U9Uü+ü 6
10 Necmi Gülyutmaz 6üüüUU 6

İsme Göre Şifre Üretme II

Buradaki amaç, şifrenin hem hatırlanması hem daha komplike olması sağlanarak daha güçlü olmasının sağlanmasıdır.Aşağıdaki kod bloğundaki şifre kombinasyonu, büyük önderimiz Mustafa Kemal Atatürk’ün ismindeki karakterlerden oluşmaktadır.Burada üretilen şifre kombinasyonu 10 haneden oluşmaktadır.Burada noktalama işaretlerine ve matematiksel operatörlere kombinasyonda bir önceki örneğe göre 2 kat daha yüksek seçilme şansı verilmiştir.

set.seed(1938)
sifre=function(isim="Necmi Gülyutmaz", hane=6, adet=5){
bisim = sub(' ','',isim)
m=strsplit(bisim, "")[[1]]
visim=unique(as.vector(m))
ni=c("!",  "#", "$", "%", "&", "(", ")", "*",  "+", "-", "/", ":", ";", "<", "=", ">", "?", "@", "[", "^", "_", "{", "|", "}", "~")
  for (s in sample(0:9, size=1, replace = F)) {
    for(i in sample(tolower(visim), size=1, replace = F)){
      for(f in sample(0:9, size=1, replace = F)){
        for(r in sample(toupper(visim), size=1, replace = F)){
          for(e in sample(ni, size=1, replace = F)){
            tablo=replicate(paste(sample(c(s,rep(i,3),f,rep(r,3),rep(e,2)), size=hane, replace = F), sep="", collapse = ""), n=adet)%>%
              as_tibble() %>% 
              rename(Şifre=value)%>% 
              mutate("Hane Sayısı"=hane, İsim=isim) %>% 
              add_column(Sıra=1:adet, .before="Şifre") %>%
              select(Sıra,İsim, "Şifre", "Hane Sayısı")%>%
            kable(caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: center;background-color: #0077b5;color:white;font-family: arial; font-size: 20px;font-weight: bold;border: 3px solid #0e76a8;box-shadow: 10px 10px 20px grey',"Üretilen Şifrelerin Listesi")) %>% 
kable_styling(bootstrap_options = c("striped", "hover"),font_size = 16) %>% row_spec(0, bold = T, color = "black") 
            return(tablo)
          }
        }   
      }
    }
  }   
  
  
}

#üretilecek şifre için isminizi, şifre adetini ve hanesini yazınız.
sifre(isim="Mustafa Kemal Atatürk", hane=10, adet=10)  
Üretilen Şifrelerin Listesi
Sıra İsim Şifre Hane Sayısı
1 Mustafa Kemal Atatürk kR}k41kRR} 10
2 Mustafa Kemal Atatürk k1}R4kR}Rk 10
3 Mustafa Kemal Atatürk R4k1RR}kk} 10
4 Mustafa Kemal Atatürk }kkR1}kRR4 10
5 Mustafa Kemal Atatürk 1}R4kkR}kR 10
6 Mustafa Kemal Atatürk kk14RRk}R} 10
7 Mustafa Kemal Atatürk 41Rkk}R}kR 10
8 Mustafa Kemal Atatürk kRR}}1k4Rk 10
9 Mustafa Kemal Atatürk R1kk4kR}R} 10
10 Mustafa Kemal Atatürk k}1Rkk4R}R 10

İsme Göre Şifre Üretme III

Aşağıdaki kod bloğundaki şifre kombinasyonu, büyük önderimiz Mustafa Kemal Atatürk’ün ismindeki karakterlerden oluşmaktadır.Burada üretilen şifre kombinasyonu 10 haneden oluşmaktadır.Aşağıdaki kod bloğunda for döngüleri kullanılmamıştır.

set.seed(1938)
sifre=function(isim="Necmi Gülyutmaz", hane=6, adet=5){
bisim = sub(' ','',isim)
m=strsplit(bisim, "")[[1]]
visim=unique(as.vector(m))
ni=c("!",  "#", "$", "%", "&", "(", ")", "*",  "+", "-", "/", ":", ";", "<", "=", ">", "?", "@", "[", "^", "_", "{", "|", "}", "~")
r=0:9
kh=tolower(visim)
bh=toupper(visim)
            tablo=replicate(paste(sample(c(ni,r,kh,bh), size=hane, replace = F), sep="", collapse = ""), n=adet)%>%
              as_tibble() %>% 
              rename(Şifre=value) %>% 
              mutate("Hane Sayısı"=hane, İsim=isim) %>% 
              add_column(Sıra=1:adet, .before="Şifre") %>%
              select(Sıra,İsim, "Şifre", "Hane Sayısı")%>%
             kable(caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: center;background-color: #0077b5;color:white;font-family: arial; font-size: 20px;font-weight: bold;border: 3px solid #0e76a8;box-shadow: 10px 10px 20px grey',"Üretilen Şifrelerin Listesi")) %>% 
kable_styling(bootstrap_options = c("striped", "hover"),font_size = 16) %>% row_spec(0, bold = T, color = "black") 
            return(tablo)
 
}

#üretilecek şifre için isminizi, şifre adetini ve hanesini yazınız.
sifre(isim="Mustafa Kemal Atatürk", hane=10, adet=10)  
Üretilen Şifrelerin Listesi
Sıra İsim Şifre Hane Sayısı
1 Mustafa Kemal Atatürk St@ }%*2># 10
2 Mustafa Kemal Atatürk _/ MTMS;&~ 10
3 Mustafa Kemal Atatürk <L!MrÜKt : 10
4 Mustafa Kemal Atatürk 6*>;m%e#$0 10
5 Mustafa Kemal Atatürk 5_|m<(-^Ku 10
6 Mustafa Kemal Atatürk Ü&4?tE:7RS 10
7 Mustafa Kemal Atatürk 9US!a(Ü0kl 10
8 Mustafa Kemal Atatürk 7S=:MT6+U! 10
9 Mustafa Kemal Atatürk %U}A<m=|l 10
10 Mustafa Kemal Atatürk u#^+e 10

Birden Fazla İsme Göre Şifre Üretme III

Aşağıdaki kod bloğundaki şifre kombinasyonları, Türkiye tarihinde derin izler bırakan isimlerin karakterlerden oluşmaktadır.Burada üretilen şifre kombinasyonu 10 haneden oluşmaktadır.

isim_vektörü=c("Cahit Arf", "Muhsin Yazıcıoğlu", "Mustafa Kemal Atatürk", "Aziz Sancar", "Tevfik Fikret", "Mehmet Akif Ersoy", "Namık Kemal", "Sabiha Gökçen")
set.seed(1938)
sifre=function(isim_vektörü, hane=6){
              for (i in isim_vektörü) {
              bisim = sub(' ','',i)
              m=strsplit(bisim, "")[[1]]
              visim=unique(as.vector(m))
              ni=c("!",  "#", "$", "%", "&", "(", ")", "*",  "+", "-", "/", ":", ";", "<", "=", ">", "?", "@", "[", "^", "_", "{", "|", "}", "~")
              r=0:9
              kh=tolower(visim)
              bh=toupper(visim)
              vektor=paste(i," için ",hane, " haneli şifre:", paste(sample(c(kh,bh,r,ni), size=hane, replace = T), sep="", collapse = ""), sep="")
     print(vektor)
}
              
}

#üretilecek şifre için yukarıdaki isim vektörünü belirleyiniz ve şifre hanesini yazınız.

sifre(isim_vektörü, hane=10)
## [1] "Cahit Arf için 10 haneli şifre:;1^7if#Fa|"
## [1] "Muhsin Yazıcıoğlu için 10 haneli şifre:Yc*_>;=ğiC"
## [1] "Mustafa Kemal Atatürk için 10 haneli şifre:rm/+~r8{+1"
## [1] "Aziz Sancar için 10 haneli şifre:rRA@s?zi9C"
## [1] "Tevfik Fikret için 10 haneli şifre:f0$24>IkT1"
## [1] "Mehmet Akif Ersoy için 10 haneli şifre:{|tY84;m;E"
## [1] "Namık Kemal için 10 haneli şifre:>[l)Eı(Nnı"
## [1] "Sabiha Gökçen için 10 haneli şifre:^1B%I0;B~-"

Türkçe Karakterlerle Şifre Üretme

Aşağıdaki örnek uygulamada Türkçe dilinde 12 haneli 10 adet şifre üretilmiştir.Dilerseniz istediğiniz sayıda ve istediğiniz hanede şifre üretebilirsiniz.

set.seed(61)

sifre=function(dil=as.vector("Türkçe"),hane=6, adet=5){
  rakam <- 0:9
  HARF <- c("A","B", "C", "Ç", "D", "E","F","G", "Ğ", "H", "I", "İ", "J", "K", "L", "M", "N", "O", "Ö", "P", "R", "S", "Ş", "T", "U", "Ü", "V", "Y", "Z")
  tr <- c(rakam, HARF)
  ing<-c(rakam, LETTERS)
  
  if(dil=="Türkçe"){
            tablo=replicate(paste(sample(tr, size=hane, replace = T), sep="", collapse = ""), n=adet) %>% 
              as_tibble() %>% 
              rename(Sifre=value)%>% 
              mutate(Dili=dil, "Hane Sayısı"=hane) %>%
              add_column(Sıra=1:adet, .before="Sifre") %>%
              kable(caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: center;background-color: #0077b5;color:white;font-family: arial; font-size: 20px;font-weight: bold;border: 3px solid #0e76a8;box-shadow: 10px 10px 20px grey',"Üretilen Şifrelerin Listesi")) %>% 
kable_styling(bootstrap_options = c("striped", "hover"),font_size = 16) %>% row_spec(0, bold = T, color = "black") 
            return(tablo)
  }  else { tablo=replicate(paste(sample(ing, size=hane, replace = T), sep="", collapse = ""), n=adet) %>% 
              as_tibble() %>% 
              rename(Sifre=value)%>% 
              mutate(Dili=dil, "Hane Sayısı"=hane) %>% 
              add_column(Sıra=1:adet, .before="Sifre") %>%
              kable(caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: center;background-color: #0077b5;color:white;font-family: arial; font-size: 20px;font-weight: bold;border: 3px solid #0e76a8;box-shadow: 10px 10px 20px grey',"Üretilen Şifrelerin Listesi")) %>% 
kable_styling(bootstrap_options = c("striped", "hover"),font_size = 16) %>% row_spec(0, bold = T, color = "black") 
             return(tablo)
  }
}

    
#üretilecek şifre adetini ve hanesini yazınız.
sifre(dil="Türkçe", hane=12, adet=10)  
Üretilen Şifrelerin Listesi
Sıra Sifre Dili Hane Sayısı
1 B6JHTAŞ3LS2E Türkçe 12
2 ÇRNDÇNBKÇIĞP Türkçe 12
3 KUÜEÖU4ARTTL Türkçe 12
4 1G18FTİ0H1Ç0 Türkçe 12
5 FVUS0MRH1AD0 Türkçe 12
6 MNAYH8ÜFÜBT6 Türkçe 12
7 5OEF3ÜV7N7ES Türkçe 12
8 UKBUC77GCJEY Türkçe 12
9 VÖMİEC1ABÜ4C Türkçe 12
10 UYŞ4FS1ÖNNÜA Türkçe 12

İngilizce Karakterlerle Şifre Üretme

Aşağıdaki örnek uygulamada ingilizce dilinde 12 haneli 10 adet şifre üretilmiştir.Dilerseniz istediğiniz sayıda ve istediğiniz hanede şifre üretebilirsiniz.

set.seed(61)

sifre=function(dil=as.vector("Türkçe"),hane=6, adet=5){
  rakam <- 0:9
  HARF <- c("A","B", "C", "Ç", "D", "E","F","G", "Ğ", "H", "I", "İ", "J", "K", "L", "M", "N", "O", "Ö", "P", "R", "S", "Ş", "T", "U", "Ü", "V", "Y", "Z")
  tr <- c(rakam, HARF)
  ing<-c(rakam, LETTERS)
  
  if(dil=="Türkçe"){
            tablo=replicate(paste(sample(tr, size=hane, replace = T), sep="", collapse = ""), n=adet) %>% 
              as_tibble() %>% 
              rename(Sifre=value)%>% 
              mutate(Dili=dil, "Hane Sayısı"=hane) %>% 
              add_column(Sıra=1:adet, .before="Sifre") %>%
            kable(caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: center;background-color: #0077b5;color:white;font-family: arial; font-size: 20px;font-weight: bold;border: 3px solid #0e76a8;box-shadow: 10px 10px 20px grey',"Üretilen Şifrelerin Listesi")) %>% 
kable_styling(bootstrap_options = c("striped", "hover"),font_size = 16) %>% row_spec(0, bold = T, color = "black") 
            return(tablo)
  }  else { tablo=replicate(paste(sample(ing, size=hane, replace = T), sep="", collapse = ""), n=adet) %>% 
              as_tibble() %>% 
              rename(Sifre=value)%>% 
              mutate(Dili=dil, "Hane Sayısı"=hane) %>% 
              add_column(Sıra=1:adet, .before="Sifre") %>%
              kable(caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: center;background-color: #0077b5;color:white;font-family: arial; font-size: 20px;font-weight: bold;border: 3px solid #0e76a8;box-shadow: 10px 10px 20px grey',"Üretilen Şifrelerin Listesi")) %>% 
kable_styling(bootstrap_options = c("striped", "hover"),font_size = 16) %>% row_spec(0, bold = T, color = "black") 
             return(tablo)
  }
}
    
#üretilecek şifre adetini ve hanesini yazınız.
sifre(dil="İngilizce", hane=12, adet=10)  
Üretilen Şifrelerin Listesi
Sıra Sifre Dili Hane Sayısı
1 B6MJXAW3OV2F İngilizce 12
2 DUQEDQBNDKIT İngilizce 12
3 NYZFSY4AUXXO İngilizce 12
4 1H18GXL0J1D0 İngilizce 12
5 GYV0PUJ1AE0P İngilizce 12
6 QAJ8ZGZBX65R İngilizce 12
7 FG3Z7Q7FVYNB İngilizce 12
8 YC77HCMFSPLF İngilizce 12
9 C1ABZ4CYW4GV İngilizce 12
10 1SQQZAJIUFEQ İngilizce 12

Büyük, Küçük Harf Karışımı İle Şifre Üretme

sifre fonksiyonu içerisinde dil=“Türkçe” yazılmasa da default olarak Türkçe dilini tanımaktadır.

set.seed(61)

sifre=function(dil=as.vector("Türkçe"),hane=6, adet=5){
  rakam <- 0:9
  HARF <- c("A","B", "C", "Ç", "D", "E","F","G", "Ğ", "H", "I", "İ", "J", "K", "L", "M", "N", "O", "Ö", "P", "R", "S", "Ş", "T", "U", "Ü", "V", "Y", "Z")
  tr <- c(rakam, HARF, tolower(HARF))
  ing<-c(rakam, LETTERS, letters)
  
  if(dil=="Türkçe"){
            tablo=replicate(paste(sample(tr, size=hane, replace = T), sep="", collapse = ""), n=adet) %>% 
              as_tibble() %>% 
              rename(Sifre=value)%>% 
              mutate(Dili=dil, "Hane Sayısı"=hane) %>% 
              add_column(Sıra=1:adet, .before="Sifre") %>%
            kable(caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: center;background-color: #0077b5;color:white;font-family: arial; font-size: 20px;font-weight: bold;border: 3px solid #0e76a8;box-shadow: 10px 10px 20px grey',"Üretilen Şifrelerin Listesi")) %>% 
kable_styling(bootstrap_options = c("striped", "hover"),font_size = 16) %>% row_spec(0, bold = T, color = "black") 
            return(tablo)
  }  else { tablo=replicate(paste(sample(ing, size=hane, replace = T), sep="", collapse = ""), n=adet) %>% 
              as_tibble() %>% 
              rename(Sifre=value)%>% 
              mutate(Dili=dil, "Hane Sayısı"=hane) %>% 
              add_column(Sıra=1:adet, .before="Sifre") %>%
              kable(caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: center;background-color: #0077b5;color:white;font-family: arial; font-size: 20px;font-weight: bold;border: 3px solid #0e76a8;box-shadow: 10px 10px 20px grey',"Üretilen Şifrelerin Listesi")) %>% 
kable_styling(bootstrap_options = c("striped", "hover"),font_size = 16) %>% row_spec(0, bold = T, color = "black") 
             return(tablo)
  }
}
    
#üretilecek şifre adetini ve hanesini yazınız.
sifre(dil="Türkçe", hane=12, adet=10)  
Üretilen Şifrelerin Listesi
Sıra Sifre Dili Hane Sayısı
1 BJcH3yaRuNDa Türkçe 12
2 ğNsÇĞKUpÜlÖA Türkçe 12
3 tTavööt18Tüu Türkçe 12
4 bh1ğÇ0FVoUSg Türkçe 12
5 üMRvD0lsYH8j Türkçe 12
6 T65Ff3bESKBU Türkçe 12
7 7d7JEYÖiMİtC Türkçe 12
8 1Ahj4oYŞFvşÖ Türkçe 12
9 bNÜAHVĞjöğED Türkçe 12
10 NkgD9dLs1d0Y Türkçe 12

Büyük, Küçük Harf Karışımı İle İngilizce Şifre Üretme

set.seed(61)

sifre=function(dil=as.vector("Türkçe"),hane=6, adet=5){
  rakam <- 0:9
  HARF <- c("A","B", "C", "Ç", "D", "E","F","G", "Ğ", "H", "I", "İ", "J", "K", "L", "M", "N", "O", "Ö", "P", "R", "S", "Ş", "T", "U", "Ü", "V", "Y", "Z")
  tr <- c(rakam, HARF, tolower(HARF))
  ing<-c(rakam, LETTERS, letters)
  
  if(dil=="Türkçe"){
            tablo=replicate(paste(sample(tr, size=hane, replace = T), sep="", collapse = ""), n=adet) %>% 
              as_tibble() %>% 
              rename(Sifre=value)%>% 
              mutate(Dili=dil, "Hane Sayısı"=hane) %>% 
              add_column(Sıra=1:adet, .before="Sifre") %>%
              kable(caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: center;background-color: #0077b5;color:white;font-family: arial; font-size: 20px;font-weight: bold;border: 3px solid #0e76a8;box-shadow: 10px 10px 20px grey',"Üretilen Şifrelerin Listesi")) %>% 
kable_styling(bootstrap_options = c("striped", "hover"),font_size = 16) %>% row_spec(0, bold = T, color = "black") 
            return(tablo)
  }  else { tablo=replicate(paste(sample(ing, size=hane, replace = T), sep="", collapse = ""), n=adet) %>% 
              as_tibble() %>% 
              rename(Sifre=value)%>% 
              mutate(Dili=dil, "Hane Sayısı"=hane) %>% 
              add_column(Sıra=1:adet, .before="Sifre") %>%
              kable(caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: center;background-color: #0077b5;color:white;font-family: arial; font-size: 20px;font-weight: bold;border: 3px solid #0e76a8;box-shadow: 10px 10px 20px grey',"Üretilen Şifrelerin Listesi")) %>% 
kable_styling(bootstrap_options = c("striped", "hover"),font_size = 16) %>% row_spec(0, bold = T, color = "black") 
             return(tablo)
  }
}
    
#üretilecek şifre adetini ve hanesini yazınız.
sifre(dil="İngilizce", hane=12, adet=10)  
Üretilen Şifrelerin Listesi
Sıra Sifre Dili Hane Sayısı
1 B6MffeJXAvW3 İngilizce 12
2 OV2hFDdUxQED İngilizce 12
3 dplQByNDKIqT İngilizce 12
4 NYwZrFSyggY4 İngilizce 12
5 djAuUXXOd1vH İngilizce 12
6 v18GXL0emqJ1 İngilizce 12
7 glD0GauYVk0P İngilizce 12
8 UvJu1yAE0rfP İngilizce 12
9 qQAyzbJ8ZGZB İngilizce 12
10 pX65RFGj3Za7 İngilizce 12

Noktalama İşaretlerinin Karışımı İle İngilizce Şifre Üretme

Bu kısımda fonksiyona noktalama işaretleri ve matematiksel operatörlerden bazıları dahil edilmiştir.

set.seed(61)

sifre=function(dil=as.vector("Türkçe"),hane=6, adet=5){
  rakam <- 0:9
  HARF <- c("A","B", "C", "Ç", "D", "E","F","G", "Ğ", "H", "I", "İ", "J", "K", "L", "M", "N", "O", "Ö", "P", "R", "S", "Ş", "T", "U", "Ü", "V", "Y", "Z")
  ni=c("!",  "#", "$", "%", "&", "(", ")", "*",  "+", "-", "/", ":", ";", "<", "=", ">", "?", "@", "[", "^", "_", "{", "|", "}", "~")
  tr <- c(rakam, HARF, tolower(HARF), ni)
  ing<-c(rakam, LETTERS, letters, ni)
  
  if(dil=="Türkçe"){
            tablo=replicate(paste(sample(tr, size=hane, replace = T), sep="", collapse = ""), n=adet) %>% 
              as_tibble() %>% 
              rename(Sifre=value)%>% 
              mutate(Dili=dil, "Hane Sayısı"=hane) %>% 
              add_column(Sıra=1:adet, .before="Sifre") %>%
              kable(caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: center;background-color: #0077b5;color:white;font-family: arial; font-size: 20px;font-weight: bold;border: 3px solid #0e76a8;box-shadow: 10px 10px 20px grey',"Üretilen Şifrelerin Listesi")) %>% 
kable_styling(bootstrap_options = c("striped", "hover"),font_size = 16) %>% row_spec(0, bold = T, color = "black") 
            return(tablo)
  }  else { tablo=replicate(paste(sample(ing, size=hane, replace = T), sep="", collapse = ""), n=adet) %>% 
              as_tibble() %>% 
              rename(Sifre=value)%>% 
              mutate(Dili=dil, "Hane Sayısı"=hane) %>% 
              add_column(Sıra=1:adet, .before="Sifre") %>%
              kable(caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: center;background-color: #0077b5;color:white;font-family: arial; font-size: 20px;font-weight: bold;border: 3px solid #0e76a8;box-shadow: 10px 10px 20px grey',"Üretilen Şifrelerin Listesi")) %>% 
kable_styling(bootstrap_options = c("striped", "hover"),font_size = 16) %>% row_spec(0, bold = T, color = "black") 
             return(tablo)
  }
}
    
#üretilecek şifre adetini ve hanesini yazınız.
sifre(dil="İngilizce", hane=12, adet=10)  
Üretilen Şifrelerin Listesi
Sıra Sifre Dili Hane Sayısı
1 İngilizce 12
2 #QE>dlQ<yD|I İngilizce 12
3 )A!Xd İngilizce 12
4 %v^v!18[X}\(# </td> <td style="text-align:left;"> İngilizce </td> <td style="text-align:right;"> 12 </td> </tr> <tr> <td style="text-align:right;"> 5 </td> <td style="text-align:left;"> em{1lD0GauYV </td> <td style="text-align:left;"> İngilizce </td> <td style="text-align:right;"> 12 </td> </tr> <tr> <td style="text-align:right;"> 6 </td> <td style="text-align:left;"> k\)PU{%;E0r;y İngilizce 12
7 bJ8[< İngilizce 12
8 3-e-FVNBY=7h İngilizce 12
9 7^=MFbSnPL!@ İngilizce 12
10 C1A<mp4=ubW) İngilizce 12

Noktalama İşaretlerinin Karışımı İle Türkçe Şifre Üretme

sifre fonksiyonu içerisine dil=“Türkçe” yazılmasa da default olarak Türkçe dilini tanımaktadır.

set.seed(61)

sifre=function(dil=as.vector("Türkçe"),hane=6, adet=5){
  rakam <- 0:9
  HARF <- c("A","B", "C", "Ç", "D", "E","F","G", "Ğ", "H", "I", "İ", "J", "K", "L", "M", "N", "O", "Ö", "P", "R", "S", "Ş", "T", "U", "Ü", "V", "Y", "Z")
  ni=c("!",  "#", "$", "%", "&", "(", ")", "*",  "+", "-", "/", ":",";", "<", "=", ">", "?", "@", "[", "^", "_", "{", "|", "}", "~")
  tr <- c(rakam, HARF, tolower(HARF), ni)
  ing<-c(rakam, LETTERS, letters, ni)
  
  if(dil=="Türkçe"){
            tablo=replicate(paste(sample(tr, size=hane, replace = T), sep="", collapse = ""), n=adet) %>% 
              as_tibble() %>% 
              rename(Sifre=value)%>% 
              mutate(Dili=dil, "Hane Sayısı"=hane) %>% 
              add_column(Sıra=1:adet, .before="Sifre") %>%
              kable(caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: center;background-color: #0077b5;color:white;font-family: arial; font-size: 20px;font-weight: bold;border: 3px solid #0e76a8;box-shadow: 10px 10px 20px grey',"Üretilen Şifrelerin Listesi")) %>% 
kable_styling(bootstrap_options = c("striped", "hover"),font_size = 16) %>% row_spec(0, bold = T, color = "black") 
            return(tablo)
  }  else { tablo=replicate(paste(sample(ing, size=hane, replace = T), sep="", collapse = ""), n=adet) %>% 
              as_tibble() %>% 
              rename(Sifre=value)%>% 
              mutate(Dili=dil, "Hane Sayısı"=hane) %>% 
              add_column(Sıra=1:adet, .before="Sifre") %>%
              kable(caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: center;background-color: #0077b5;color:white;font-family: arial; font-size: 20px;font-weight: bold;border: 3px solid #0e76a8;box-shadow: 10px 10px 20px grey',"Üretilen Şifrelerin Listesi")) %>% 
kable_styling(bootstrap_options = c("striped", "hover"),font_size = 16) %>% row_spec(0, bold = T, color = "black") 
             return(tablo)
  }
}
    
#üretilecek şifre adetini ve hanesini yazınız.
sifre(dil="Türkçe", hane=12, adet=10)  
Üretilen Şifrelerin Listesi
Sıra Sifre Dili Hane Sayısı
1 B$JcH)3_y:-a Türkçe 12
2 RuND-ağN*s^Ç Türkçe 12
3 ?ĞKUpÜl:Ö!At Türkçe 12
4 T_avö<öt18;T Türkçe 12
5 @üubh&gt;1ğÇ0FV Türkçe 12
6 oUSgüMR>v)D0 Türkçe 12
7 l{|)sYH8;*jT Türkçe 12
8 65}:Ff3%b|%E Türkçe 12
9 SKBU+7d7<+JE Türkçe 12
10 YÖiMİt:C1A*h Türkçe 12

Olasılık Oranlarına Göre Şifre Üretme

BU kısımda rakamların şifre kombinasyonunda görülme sıklığını artırmak için ilk olarak Türkçe şifre üretimesine esas karakter seti üzerinden olasılık oranı hesaplanmıştır. Aşağıdaki kod bloğunda ilk olarak tr vektörünün uzunluğu hesaplanmıştır. Bunun için yazılan fonksiyon length(tr)=93’tür. Bu sonuç, tr vektörünün eleman sayısının 93 olduğu anlamına gelmektedir. Bu vektör içerisindeki rakamlarının sayısı ise 10’dur. Amaç burada rakamların görülme sıklığını artırmak olduğundan rakamların olasılığı her bir rakam için 5/93 olarak belirlenmiştir. Toplamda rakamların olasılığı, 10 adet olduğu 10/93 olur. Kalan olasılıklar ise diğer vektör elemanlarına paylaştırılmıştır. tr vektörü içerisindeki diğer elemanların yani 83 elemanın her birinin olasılığı ise (43/93)/83 olarak alınmıştır. Vektör içerisindeki her bir elemana görülme olasılıklarını atamak için rep() fonksiyonu kullanılmıştır. Vektör içerisinde tanımlanan olasılıkları şöyledir: c(rep(5/93,10),rep((43/93)/83,83)). sum(c(rep(5/93,10),rep((43/93)/83,83))) fonksiyonu ile olasılıkların toplamı bire eşit olmak zorundadır. Burada da sonuç 1’e eşittir.

İngilizce şifre kombinasyonunda ise durum alfabedeki karakter sayısından dolayı biraz farklı ancak hesaplanması aynıdır. İngilizce şifre elemanlarının bulunduğu ing vektörünün uzunluğu length(ing)=87’dir. Amaç burada da rakamlarının şifre kombinasyonunda görülme sıklığını artırmak için olasılıkları yüksek tutulmuştur. Bu vektör içerisinde de rakamlarının sayısı ise 10’dur. Rakamların olasılığı her bir rakam için 4/87 olarak belirlenmiştir. ing vektörü içerisindeki diğer elemanların yani 77 elemanın her birinin olasılığı ise (47/87)/77 olarak alınmıştır. Vektör içerisindeki her bir elemana görülme olasılıklarını atamak için rep() fonksiyonu kullanılmıştır. Vektör içerisinde tanımlanan olasılıkları şöyledir: c(rep(4/87,10),rep((47/87)/77,77)). sum(c(rep(4/87,10),rep((47/87)/77,77))) fonksiyonu ile olasılıkların toplamı bire eşit olmak zorundadır. Burada da sonuç 1’e eşittir.

Tabi biz burada rakamların şifre kombinasyonundaki görülme olasılıklarını artırdık. İstersek diğer elemanların ya da eleman setlerinin aynı mantıkla görülme olaılıklarını artırabiliriz.

sifre fonksiyonu içerisine dil=“Türkçe” yazılmasa da default olarak Türkçe dilini tanımaktadır.

set.seed(61)

sifre=function(dil=as.vector("Türkçe"),hane=6, adet=5){
  rakam <- 0:9
  HARF <- c("A","B", "C", "Ç", "D", "E","F","G", "Ğ", "H", "I", "İ", "J", "K", "L", "M", "N", "O", "Ö", "P", "R", "S", "Ş", "T", "U", "Ü", "V", "Y", "Z")
  ni=c("!",  "#", "$", "%", "&", "(", ")", "*",  "+", "-", "/", ":",";", "<", "=", ">", "?", "@", "[", "^", "_", "{", "|", "}", "~")
  tr <- c(rakam, HARF, tolower(HARF), ni)
  tr_olasilik<-c(rep(5/length(tr),10),rep((43/length(tr))/83,83))
  ing<-c(rakam, LETTERS, letters, ni)
  ing_olasilik<-c(rep(4/length(ing),10),rep((37/length(ing))/77,77))
  
  if(dil=="Türkçe"){
            tablo=replicate(paste(sample(tr, size=hane, replace = T, prob=tr_olasilik), sep="", collapse = ""), n=adet) %>% 
              as_tibble() %>% 
              as_tibble() %>% 
              rename(Sifre=value)%>% 
              mutate(Dili=dil, "Hane Sayısı"=hane) %>% 
              add_column(Sıra=1:adet, .before="Sifre") %>%
              kable(caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: center;background-color: #0077b5;color:white;font-family: arial; font-size: 20px;font-weight: bold;border: 3px solid #0e76a8;box-shadow: 10px 10px 20px grey',"Üretilen Şifrelerin Listesi")) %>% 
kable_styling(bootstrap_options = c("striped", "hover"),font_size = 16) %>% row_spec(0, bold = T, color = "black") 
            return(tablo)
  }  else { tablo=replicate(paste(sample(ing, size=hane, replace = T, prob=ing_olasilik), sep="", collapse = ""), n=adet) %>% 
              as_tibble() %>% 
              rename(Sifre=value)%>% 
              mutate(Dili=dil, "Hane Sayısı"=hane) %>% 
              add_column(Sıra=1:adet, .before="Sifre") %>%
              kable(caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: center;background-color: #0077b5;color:white;font-family: arial; font-size: 20px;font-weight: bold;border: 3px solid #0e76a8;box-shadow: 10px 10px 20px grey',"Üretilen Şifrelerin Listesi")) %>% 
kable_styling(bootstrap_options = c("striped", "hover"),font_size = 16) %>% row_spec(0, bold = T, color = "black") 
             return(tablo)
  }
}
    
#üretilecek şifre adetini ve hanesini yazınız.
sifre(dil="Türkçe", hane=12, adet=10)  
Üretilen Şifrelerin Listesi
Sıra Sifre Dili Hane Sayısı
1 7>7220Ö55368 Türkçe 12
2 İ9;6/0765N55 Türkçe 12
3 Y3{k575[ Türkçe 12
4 f542OÖ693~F1 Türkçe 12
5 Abp3by327dp5 Türkçe 12
6 )256J25ç?;8s Türkçe 12
7 _7Kvtc09392I Türkçe 12
8 g8Kh&899V!83 Türkçe 12
9 7-fç6I4}81G_ Türkçe 12
10 r12039067a92 Türkçe 12

Sonuç

Özetle, yapılan çalışmayla hem İngilizce hem de Türkçe karakterleri ile şifre üretme uygulamaları yapılarak konu alanında farkındalık oluşturulması amaçlanmıştır.

Faydalı olması dileğiyle.

Bilimle ve teknolojiyle kalınız.

  • Kaynak gösterilmeden alıntı yapılamaz veya kopyalanamaz.
  • It can not be cited or copied without referencing.

Yararlanılan Kaynaklar

cite_packages() %>% 
as_tibble() %>% 
rename("Referanslar"=value) %>% 
mutate(ID = paste("[",row_number(),"]",sep="")) %>% 
select(ID, Referanslar) %>% 
kable(caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: left;background-color: #0077b5;color:white;font-family: arial; font-size: 20px;font-weight: bold;border: 3px solid #0e76a8;box-shadow: 10px 10px 20px grey',"Kaynakça")) %>% 
kable_styling(bootstrap_options = c("striped", "hover"),font_size = 16)
Kaynakça
ID Referanslar
[1] Dietrich J (2020). citation: Software Citation Tools. R packageversion 0.4.1.
[2] Hadley Wickham (2021). tidyr: Tidy Messy Data. R package version 1.1.3. https://CRAN.R-project.org/package=tidyr
[3] Hadley Wickham and Jennifer Bryan (2019). readxl: Read Excel Files. R package version 1.3.1. https://CRAN.R-project.org/package=readxl
[4] Hadley Wickham, Romain François, Lionel Henry and Kirill Müller (2021). dplyr: A Grammar of Data Manipulation. R package version 1.0.7. https://CRAN.R-project.org/package=dplyr
[5] Hao Zhu (2021). kableExtra: Construct Complex Table with ‘kable’ and Pipe Syntax. R package version 1.3.4. https://CRAN.R-project.org/package=kableExtra
[6] Jeroen Ooms (2021). writexl: Export Data Frames to Excel ‘xlsx’ Format. R package version 1.4.0. https://CRAN.R-project.org/package=writexl
[7] JJ Allaire and Yihui Xie and Jonathan McPherson and Javier Luraschi and Kevin Ushey and Aron Atkins and Hadley Wickham and Joe Cheng and Winston Chang and Richard Iannone (2021). rmarkdown: Dynamic Documents for R. R package version 2.10. URL https://rmarkdown.rstudio.com.
[8] Kirill Müller and Hadley Wickham (2021). tibble: Simple Data Frames. R package version 3.1.3. https://CRAN.R-project.org/package=tibble
[9] Makowski, D., Ben-Shachar, M.S., Patil, I. & Lüdecke, D. (2020). Automated Results Reporting as a Practical Tool to Improve Reproducibility and Methodological Best Practices Adoption. CRAN. Available from https://github.com/easystats/report. doi: .
[10] R Core Team (2021). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. URL https://www.R-project.org/.